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。)

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

类型
字符串
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.