Количество
import "k8s.io/apimachinery/pkg/api/resource"
Количество — это фиксированное представление числа. Оно обеспечивает удобную сериализацию/десериализацию в JSON и YAML, а также доступ к значениям через методы String() и AsInt64().
Формат сериализации:
<количество> ::= <знаковоеЧисло><суффикс> (Обратите внимание, что <суффикс> может быть пустым, как в случае "" в <decimalSI>.) <цифра> ::= 0 | 1 | ... | 9 <цифры> ::= <цифра> | <цифра><цифры> <число> ::= <цифры> | <цифры>.<цифры> | <цифры>. | .<цифры> <знак> ::= "+" | "-" <знаковоеЧисло> ::= <число> | <знак><число> <суффикс> ::= <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" <знаковоеЧисло> | "E" <знаковоеЧисло>
Независимо от используемой формы экспоненты, количество не может представлять число с величиной больше 2^63-1, и не может иметь более 3 десятичных знаков. Числа большего размера или большей точности будут ограничены или округляться вверх. (Например: 0,1m будет округлено до 1m.) В будущем это может быть расширено, если нам потребуются более большие или меньшие количества.
При разборе количества из строки, тип суффикса запоминается и используется при сериализации.
Перед сериализацией количество приводится к «канонической форме». Это означает, что экспонента/суффикс будут скорректированы вверх или вниз (с соответствующим увеличением или уменьшением мантиссы) так, что: а. Точность не теряется б. Дробные цифры не будут выводиться в. Экспонента (или суффикс) максимальна. Знак будет опущен, если число не отрицательное.
Примеры: 1.5 будет сериализовано как "1500m" 1.5Gi будет сериализовано как "1536Mi"
Обратите внимание, что количество НИКОГДА не представляется внутри в виде числа с плавающей точкой. Это и есть вся суть этого упражнения.
Неканонические значения всё ещё будут разборны, если они правильно сформированы, но будут перевыведены в канонической форме. (Поэтому всегда используйте каноническую форму или не сравнивайте.)
Этот формат призван затруднить использование этих чисел без написания специального обработчика, в надежде на то, что это заставит разработчиков использовать также фиксированное представление.
© 2022 The Kubernetes Authors | Documentation Distributed under CC BY 4.0
Copyright © 2022 The Linux Foundation ®. All rights reserved.
https://v1-24.docs.kubernetes.io/docs/reference/kubernetes-api/common-definitions/quantity/