Quantity 是数字的定点表示。它提供了方便的 JSON 和 YAML 编组/解组功能,以及 String() 和 AsInt64() 访问器。
序列化格式如下:
(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> ```
无论使用三种指数形式中的哪一种,任何 Quantity 都不能表示幅度大于 2^63-1 的数字,也不能超过 3 位小数。更大或更精确的数字将被截断或向上取整。(例如:0.1m 将向上取整为 1m。)如果将来需要更大或更小的数量,这可能会被扩展。
当 Quantity 从字符串解析时,它会记住其后缀类型,并在再次序列化时使用相同的类型。
在序列化之前,Quantity 将被置于 "规范形式"(canonical form)。这意味着指数/后缀将向上或向下调整(尾数相应增加或减少),使得:
- 不会丢失精度 - 不会输出小数位 - 指数(或后缀)尽可能大。
除非数字为负数,否则符号将被省略。
示例:
- 1.5 将被序列化为 "1500m" - 1.5Gi 将被序列化为 "1536Mi"
只要格式正确,非规范值仍可被解析,但会以其规范形式重新输出。(因此请始终使用规范形式,或者不要进行 diff。)
此格式旨在使不编写某种特殊处理代码就使用这些数字变得困难,希望以此促使实现者也使用定点实现。
apiVersion: resource
import "k8s.io/apimachinery/pkg/api/resource"
Quantity 是数字的定点表示。它提供了方便的 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>
无论使用三种指数形式中的哪一种,任何 Quantity 都不能表示幅度大于 2^63-1 的数字, 也不能超过 3 位小数。更大或更精确的数字将被截断或向上取整。 (例如:0.1m 将向上取整为 1m。) 如果将来需要更大或更小的数量,这可能会被扩展。
当 Quantity 从字符串解析时,它会记住其后缀类型,并在再次序列化时使用相同的类型。
在序列化之前,Quantity 将被置于"规范形式"(canonical form)。 这意味着指数/后缀将向上或向下调整(尾数相应增加或减少),使得:
除非数字为负数,否则符号将被省略。
示例:
请注意,Quantity 永远不会在内部以浮点数表示。这正是此设计的全部意义所在。
只要格式正确,非规范值仍可被解析,但会以其规范形式重新输出。 (因此请始终使用规范形式,或者不要进行 diff。)
此格式旨在使不编写某种特殊处理代码就使用这些数字变得困难, 希望以此促使实现者也使用定点实现。