数量

Quantity 是一个数字的定点表示法。

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

Quantity 是一个数字的定点表示法。除了 String() 和 AsInt64() 访问器之外,它还提供了便捷的 JSON 和 YAML 编组/解组。

序列化格式为

 \<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.1m 将向上舍入为 1m。)如果我们需要更大或更小的数量,将来可能会扩展此范围。

当从字符串解析 Quantity 时,它会记住其后缀的类型,并在序列化时再次使用相同的类型。

在序列化之前,Quantity 将被转换为“规范形式”。这意味着指数/后缀将向上或向下调整(尾数相应增加或减少),使得

  • 不损失精度 - 不会发出小数位 - 指数(或后缀)尽可能大。

除非数字为负数,否则将省略符号。

示例

  • 1.5 将序列化为 "1500m" - 1.5Gi 将序列化为 "1536Mi"

请注意,数量永远不会在内部用浮点数表示。这就是此练习的重点。

非规范值仍然可以解析,只要它们格式良好,但将以其规范形式重新发出。(所以始终使用规范形式,或者不要进行比较。)

这种格式旨在使在不编写某种特殊处理代码的情况下难以使用这些数字,希望这将导致实现者也使用定点实现。


此页面是自动生成的。

如果您计划报告此页面的问题,请在问题描述中提及此页面是自动生成的。修复可能需要在 Kubernetes 项目的其他地方进行。

上次修改时间:2024 年 8 月 28 日下午 6:01(太平洋标准时间):为 v1.31 更新生成的 API 参考 (8ba98c79c1)