<center> 第二十章 ObjectScript 应用程序中的数值计算 - 转换:十进制到 $DOUBL
E </center>
转换:十进制到 $DOUBLE
注意: 建议应用程序显式控制十进制和 $DOUBLE
格式之间的转换。
到 $DOUBLE
格式的转换是通过 $DOUBLE
函数显式完成的。此函数还允许通过表达式 $DOUBLE(<S>)
显式构造非数字和无穷大的 IEEE
表示,其中 <S>
是:
- 字符串
nan
生成NaN
- 任意字符串
inf
、+inf
、-inf
、infinity
、+infinity
或-infinity
(表示无穷大)。 - 数字和字符串分别为
-0
和-0
注意:输入时忽略字符串 <S>
的大小写。输出时,仅生成 NAN
、INF
和 -INF
。
转换:$DOUBLE
到十进制
注意: 建议应用程序显式控制十进制和 $DOUBLE
格式之间的转换。
$DOUBLE
形式的值使用 $DECIMAL
函数转换为十进制值。调用该函数的结果是一个适合转换为十进制值的字符串。
注意:虽然此描述假设提供给 $DECIMAL
的值是 $DOUBLE
值,但这不是必需的。可以提供任何数值作为参数,并且相同的规则适用于舍入。
$DECIMAL(x)
该函数的单参数形式将作为其参数给出的 $DOUBLE
值转换为十进制。 $DECIMAL
将数字的小数部分四舍五入为 19
位。 $DECIMAL
始终四舍五入到最接近的十进制值。
$DECIMAL(x, n)
两个参数的形式允许精确控制返回的位数。如果 n
大于 38
,则会发生 <ILLEGAL VALUE>
错误。如果 n
大于 0
,则返回四舍五入到 n
个有效数字的 x
值。
- 当
n
为零时,使用以下规则确定该值:
-
如果
x
是无穷大,则根据需要返回INF
或-INF
。 -
如果
x
是NaN
,则返回NAN
。 -
如果
x
是正零或负零,则返回0
。 -
如果
x
可以精确地用20
个或更少的有效数字表示,则返回包含这些精确有效数字的规范数字字符串。 -
否则,将小数表示形式截断为 20 位有效数字,并且
- 如果第
20
位是0
,则替换为1
; - 如果第
20
位数字是5
,则将其替换为6
。
然后,返回结果字符串。
- 如果第
此舍入规则涉及将第 20
位数字截断至零,除非它会不精确地使第 20
位数字为 0
或 5
,该舍入规则具有以下属性:
- 如果
$DOUBLE
值与十进制值不同,则这两个值将始终具有不相等的表示字符串。 - 当
$DOUBLE
值可以转换为十进制值而不生成<MAXNUMBER>
错误时,结果与将$DOUBLE
值转换为字符串,然后将该字符串转换为十进制值相同。进行两次转换时不可能出现双轮错误。
转换:十进制到字符串
当十进制值按原样使用时(例如,作为串联运算符的操作数之一),默认情况下可以将其转换为字符串。当需要对转换进行更多控制时,请使用 $FNUMBER
函数。
网友评论