可以提高浮點數精度嗎?<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”;