本主题介绍MATH_NUMERIC类型和详细说明指数的处理方式、最大位数和十进制数字的最大数。 它还包括有关以下方面的讨论:
指数 (E)
无效值
操作精度
货币
MATH_NUMERIC类型是数值字符串类型。 若要使用它,请输入以下格式的参数值:
<OptionalSign><IntegerAndFractionalPart><OptionalExponentPart>
位置
<OptionalSign> 可以是 + 或 -。
+ 是默认值。
<IntegerAndFractionalPart> 最多为 32 个有效数字,不计算十进制符号。 小数符号特定于 JD Edwards EnterpriseOne 安装的区域设置,通常是句点(.)或逗号(,)。 这些数字可以是所有整数、所有分数或部分整数和部分分数,但不能超过 32。
<OptionalExponentPart> 等效于:
'e' <OptionalSign><ExponentDigits>
位置
<OptionalSign> 可以是 + 或 -。
+ 是默认值。
<ExponentDigits> 最多为两位数字。 允许介于 63 和 -63(不包括零)之间的值。
有效值
有效MATH_NUMERIC值的示例:
123.045
4089(注意没有用逗号分隔千位)
-9084
-230.75
0.010503
1.023e-10,相当于 0.0000000001023
0.097e5 或 0.097e+5,相当于 9700
1.0e-32,相当于 0.00000000000000000000000000000001(这是有效的,因为在这种情况下,忽略整型“0”,即 32 个有效小数位数)。
无效值
无效值取决于值的类型。 太小的小数部分被解释为零(所有有效数字都丢失)。 具有太多有效数字的整数会导致意外结果。 在这种情况下,JD Edwards EnterpriseOne 并不总是引发错误情况。 太大或太小的指数也作为无效值返回。
无效MATH_NUMERIC值的示例:
1034.000000000000000000000000000000001023 - 有效数字过多
1.023e-64 - 指数太小
0.00317e64 - 指数太大
除了适用于符号和小数点的非数字字符之外,任何其他非数字字符都会导致值无效。
指数 (E)
指数由 JD Edwards EnterpriseOne MATH_NUMERIC提供,作为输入值的便利。 但是,大多数值返回时不带指数(所有 32 个有效数字都可见)。
操作精确性
如果某个操作导致精度损失,则会发生舍入。 例如:
1.9e-31 / 10.0 = 0.000000000000000000000000000002。
1.9e-31 / 100.0 = 0.0000000000000000000000000000
在其他情况下,会发生不可预知的结果,因为当非常大的正值乘以另一个值时。 1.01e32 * 2.053e32 不产生可靠的结果,也不会引发错误。 对于大多数业务方案,不会超过这些范围。
货币
当 JD Edwards EnterpriseOne 业务函数需要货币值时,业务函数始终具有一个单独的参数,用于四个字符的货币代码。 除非使用不同于为 JD Edwards EnterpriseOne 系统配置的默认货币的其他货币,否则不需要传入此代码。