Інформація в цьому документі може бути застарілою
Дата оновлення цього документа старіша за оригінал, можливо інформація в ньому застаріла. Радимо ознайомитись з оригіналом англійською для отримання найсвіжіших відомостей: Quantity
Quantity
import "k8s.io/apimachinery/pkg/api/resource"
Quantity — це представлення числа з фіксованою комою. Воно надає зручний спосіб перетворення в/з JSON та YAML, на додачу до інструментів String() та AsInt64().
Формат серіалізації виглядає наступним чином:
\<quantity> ::= \<signedNumber>\<suffix>
(Зауважте, що \<suffix> може бути порожнімy, з "" у \<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
(Міжнародна система мір; Див: http://physics.nist.gov/cuu/Units/binary.html)
\<decimalSI> ::= m | "" | k | M | G | T | P | E
(Зауважте, що 1024 = 1Ki але 1000 = 1k; капіталізація не використовується.)
\<decimalExponent> ::= "e" \<signedNumber> | "E" \<signedNumber>
Незалежно від того, яка з трьох форм експоненти використовується, жодна кількість не може представляти число більше, ніж 2^63-1, а також не може мати більше трьох десяткових знаків. Числа, більші або точніші, будуть обмежені або округлені вгору. (Наприклад: 0.1m буде округлено до 1m.) Це може бути розширено в майбутньому, якщо ми потребуватимемо більших або менших кількостей.
Коли Quantity отримується зі строки, поканик запамʼятає тип суфікса, який він мав, і використовуватиме той самий тип знову, коли буде серіалізований.
Перед серіалізацією, Quantity буде приведено у "канонічну форму". Це означає, що експонента/суфікс буде відрегульована вгору або вниз (з відповідним збільшенням або зменшенням мантиси) таким чином, що:
- Точність не буде втрачена
- Дробові цифри не будуть випущені
- Експонента (або суфікс) буде максимально можливою.
Знак буде опущено, якщо число не є негативним.
Приклади:
- 1.5 буде серіалізовано як "1500m"
- 1.5Gi буде серіалізовано як "1536Mi"
Зверніть увагу, що кількість НІКОЛИ не буде внутрішньо представлена числом з плаваючою комою. Це і є головна мета цього підходу.
Неканонічні значення все ще будуть проходити оцінку, якщо вони правильно сформовані, але будуть повторно випущені у своїй канонічній формі. (Отже, завжди використовуйте канонічну форму.)
Цей формат призначений для ускладнення використання цих чисел без написання спеціального коду обробки в надії на те, що це змусить реалізаторів також використовувати реалізацію чисел з фіксованою точкою.