Spec-Zone.ru › Kubernetes

Количество

Количество — это представление числа с фиксированной точкой.

import "k8s.io/apimachinery/pkg/api/resource"

Количество — это представление числа с фиксированной точкой. Оно обеспечивает удобное маршаллирование/демаршаллирование в JSON и YAML, а также доступ к методам String() и AsInt64().

Формат сериализации:

 \<quantity>        ::= \<signedNumber>\<suffix>

  (Note that \<suffix> may be empty, from the "" case in \<decimalSI>.)

\<digit>           ::= 0 | 1 | ... | 9 \<digits>          ::= \<digit> | \<digit>\<digits> \<number>          ::= \<digits> | \<digits>.\<digits> | \<digits>. | .\<digits> \<sign>            ::= "+" | "-" \<signedNumber>    ::= \<number> | \<sign>\<number> \<suffix>          ::= \<binarySI> | \<decimalExponent> | \<decimalSI> \<binarySI>        ::= Ki | Mi | Gi | Ti | Pi | Ei

  (International System of units; See: http://physics.nist.gov/cuu/Units/binary.html)

\<decimalSI>       ::= m | "" | k | M | G | T | P | E

  (Note that 1024 = 1Ki but 1000 = 1k; I didn't choose the capitalization.)

\<decimalExponent> ::= "e" \<signedNumber> | "E" \<signedNumber> 

Независимо от используемой формы экспоненты, ни одно количество не может представлять число, модуль которого больше, чем 2^63-1, и оно не может иметь более 3 десятичных знаков. Числа, большие или более точные, будут ограничены или округляться до ближайшего (например: 0,1м будет округлено до 1м). Это может быть расширено в будущем, если понадобятся большие или меньшие количества.

Когда количество парсится из строки, оно запоминает тип суффикса и использует тот же тип при сериализации.

Перед сериализацией количество приводится к «канонической форме». Это означает, что экспонента/суффикс будут изменены вверх или вниз (с соответствующим увеличением или уменьшением мантиссы) так, что:

  • Точность не теряется — дробные цифры не выводятся — экспонента (или суффикс) максимальна.

Знак будет опущен, если число не отрицательное.

Примеры:

  • 1,5 будет сериализовано как "1500m" — 1,5Gi будет сериализовано как "1536Mi"

Обратите внимание, что количество НИКОГДА не представляется во внутреннем формате с плавающей точкой. Это и есть вся суть данного упражнения.

Неканонические значения всё ещё будут парситься, если они правильно сформированы, но будут повторно выведены в канонической форме. (Поэтому всегда используйте каноническую форму или не используйте diff.)

Этот формат призван затруднить использование этих чисел без написания специального кода обработки, в надежде, что это заставит разработчиков также использовать реализацию с фиксированной точкой.

© 2024 The Kubernetes Authors | Documentation Distributed under CC BY 4.0
Copyright © 2024 The Linux Foundation ®. All rights reserved.
https://kubernetes.io/docs/reference/kubernetes-api/common-definitions/quantity/

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API