9.3. decimal64内置类型

decimal64内置类型表示实数的子集,可以用十进制数字表示。 decimal64的值空间是可以通过将64位有符号整数乘以十的负的幂来获得的数字的集合,即可表示为“i x 10^-n”,其中i是整数64并且n是整数 118之间。

9.3.1. 词汇表示

一个decimal64值从词法上表示为一个可选的符号(“+”或“-”),后跟一串十进制数字,可选地后跟一个句号('.')作为十进制指示符和一串十进制数字。 如果没有指定符号,则假定为“+”。

9.3.2. 规范形式

正数decimal64值的规范形式不包含符号“+”。 小数点是必需的。 前导和尾随零是禁止的,但必须遵守小数点前后至少有一位的规则。 零值表示为“0.0”。

9.3.3. 限制

可以用“range”语句来限制decimal64类型(见第9.2.4节)。

9.3.4. “fraction-digits”声明

如果类型是“decimal64”,则必须存在“fraction-digits”语句,它是“type”语句的子语句。 它包含118之间的整数作为参数。 它通过将值空间限制为可表达为“i x 10^-n”的数字来控制decimal64类型的值之间的最小差异的大小,其中nfraction-digits参数。

下表列出了每个fraction-digit值的最小值和最大值:

+----------------+-----------------------+----------------------+
| fraction-digit | min                   | max                  |
+----------------+-----------------------+----------------------+
| 1              | -922337203685477580.8 | 922337203685477580.7 |
| 2              | -92233720368547758.08 | 92233720368547758.07 |
| 3              | -9223372036854775.808 | 9223372036854775.807 |
| 4              | -922337203685477.5808 | 922337203685477.5807 |
| 5              | -92233720368547.75808 | 92233720368547.75807 |
| 6              | -9223372036854.775808 | 9223372036854.775807 |
| 7              | -922337203685.4775808 | 922337203685.4775807 |
| 8              | -92233720368.54775808 | 92233720368.54775807 |
| 9              | -9223372036.854775808 | 9223372036.854775807 |
| 10             | -922337203.6854775808 | 922337203.6854775807 |
| 11             | -92233720.36854775808 | 92233720.36854775807 |
| 12             | -9223372.036854775808 | 9223372.036854775807 |
| 13             | -922337.2036854775808 | 922337.2036854775807 |
| 14             | -92233.72036854775808 | 92233.72036854775807 |
| 15             | -9223.372036854775808 | 9223.372036854775807 |
| 16             | -922.3372036854775808 | 922.3372036854775807 |
| 17             | -92.23372036854775808 | 92.23372036854775807 |
| 18             | -9.223372036854775808 | 9.223372036854775807 |
+----------------+-----------------------+----------------------+

9.3.5. 使用示例

typedef my-decimal {
  type decimal64 {
    fraction-digits 2;
    range "1 .. 3.14 | 10 | 20..max";
  }
}

results matching ""

    No results matching ""