数量

Quantity 是数字的定点表示。

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> 

无论使用三种指数形式中的哪一种,任何数量的数值都不能大于 2^63-1,也不能有超过 3 个小数位。更大或更精确的数字将被截断或四舍五入。(例如:0.1m 将四舍五入为 1m。)如果将来我们需要更大或更小的数量,这可能会扩展。

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

在序列化之前,Quantity 将被设置为“规范形式”。这意味着指数/后缀将向上或向下调整(伴随着 Mantissa 的相应增加或减少),以便

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

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

示例

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

请注意,数量在内部永远不会用浮点数表示。这正是这项工作的全部意义所在。

非规范值只要格式正确,仍然可以解析,但会以其规范形式重新发出。(因此,始终使用规范形式,或者不进行差异比较。)

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


本页面是自动生成的。

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

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