1.120. io.k8s.apimachinery.pkg.api.resource.Quantity schema
- 描述
quantity 是数字的固定点表示。除了 String ()和 AsInt64 ()访问器外,它还在 JSON 和 YAML 中提供了方便的 marshaling/unmarshaling。
序列化格式为:
<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> <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.1m 将向上取整为 1m。)如果我们需要更大或较小的数量,则可能会在以后进行扩展。
从字符串解析 Quantity 时,它将记住它拥有的后缀类型,并在其序列化时再次使用相同的类型。
在序列化之前,数量将置于"规范形式"。这意味着,Exponent/suffix 将会被调整或缩减(在 Mantissa 中对应的增加或减少),以便:
- 不准确丢失 - 不会发出分数数字 - exponent (或后缀)会尽可能大。
除非数字为负数,否则将省略 符号。
示例:
- 1.5 将序列化为 "1500m" - 1.5Gi 将序列化为 "1536Mi"
请注意,数量将在内部由浮点数表示。这是此练习的完整点。
非规范值仍将解析(只要它们也被形成),但会以其规范形式重新提交。(因此,始终使用规范形式,或不使用 diff。)
此格式旨在难以在不编写某种特殊处理代码的情况下使用这些数字,以希望导致实施者也使用固定点实施。
- 类型
-
字符串