可以提高浮点数精度吗?<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />你好。有没有办法指定 JSL 在执行计算时使用的浮点精度?即,使用的有效位数。例如,在我的电脑上 1 减去 1e-15 等于 0.999... (15 个“9”)。但是如果我尝试 1 减去 1e-16,我只会得到 1。
x = 1;
y = 1e-15;
z = x - y;
显示(z); //z = 0.999999999999999(即小数点后 15 位)
y = 1e-16;
z = x - y;
显示(z); //z = 1
谢谢。
回复:可以提高浮点数精度吗?这是我为您提供我发布的结果而运行的完整脚本。
X = 1个;
是= 1e-15 ;
z = X -是;
展示( z ) ; //z = 0.999999999999999(即小数点后 15 位)
是= 1e-16 ;
z = X -是;
展示(格式( z , “固定十二月” , 30 , 20 )) ;
我在 11.21.1 中运行脚本并得到了您报告的结果。所以不同之处在于对版本 12.2 的更改。
回复:可以提高浮点数精度吗?嗨,吉姆。还意识到了另一个重要的问题。在您的帖子中,您指出问题 1 minus 1e-16 的结果是:
0.999999999999999 8个9000
(注意小数点后16位的“8”)
这是一个错字吗?
回复:可以提高浮点数精度吗?吉姆,
抱歉,这似乎在我的系统上不起作用。我使用了格式命令,结果仍然是“1”。显然它适用于您的系统,但不适用于我的系统。如果重要的话,我的公司仍然让我们使用 JMP 11.2.1。我的电脑还不到 1 岁。
问题:Format 的文档有点混乱。
s = Format(x, formatstring, , , < <)
基于此,您命令中的“20”占用货币代码字段,“30”占用ndecimal字段。我自然关心后者。“20”的目的是什么?
回复:可以提高浮点数精度吗?JMP 使用标准硬件浮点支持。IEEE 浮点数 - 维基百科,免费的百科全书
如您所见,大约有 15 位有效数字。
JMP 不支持更长的表示。(Big Int、Big Num 库目前不在 JMP 中)
作为尼尔森指出,有时用于打印数字的默认格式可能不会显示所有 15 个左右可能有趣的数字。
回复:可以提高浮点数精度吗?您看到的是 JMP 尝试以默认的友好格式显示数据。在指定显示值的格式时,值后面的精度不会改变。因此,如果您指定以更精确的方式显示“z”的值,它就会这样做。
显示(格式(z,“固定十二月”,30、20)); =“0.99999999999999989000”;