帶簡單減法的浮點數錯誤我不能說JMP是否可以正確地減去兩個簡單的數字,但我嘗試了以下數字:
16.11-15.12
0.99(好的,到目前為止一直很好)
15.29-15.18
0.109999999999999(不太好)
15.29-15.19
0.0999999999999997(一個七?)
那我的錯誤位置在哪裡?
在腳本編輯器中使用JMP 12.2.0(64位)會發生這種情況。
Re:帶簡單減法的浮點數錯誤我努力使用
format(mean(y),6)
因此在報告中,一個非常小的數字被轉換為1.574e-6並且不會佔用大量空間。
但
Format( 1.2345, "Precision", 3)
將是“有效數字”的方式。
Re:帶簡單減法的浮點數錯誤關於“有效數字”,您可以使用“精確”格式和“格式”功能來實現。此外,“Char”函數支持兩個附加參數,一個用於寬度,一個用於小數位數,如果您只想跳過Round操作進行顯示。
Char( 15.29 - 15.19, 10, 2); // "0.10"
Format( 12.345, "Precision", 3); // "12.3"
Format( 1.2345, "Precision", 3); // "1.23"
關於原始問題,它歸結為計算機將數字存儲在基數2(二進制)中但在基數10中顯示它們的事實,並且一些基數10數字如“0.1”在基數2中沒有精確表示。
Re:帶簡單減法的浮點數錯誤我不確定你在問什麼。如果您詢問這些函數是否具有指定有效數字和小數位數的選項,則答案為否。如果您問我是否會考慮添加這樣的選項,那麼該請求就是JMP開發的問題。
Re:帶簡單減法的浮點數錯誤輸入的THX,小問題,你認為選項是show,char和round的“n有效數字”嗎?這會有很大幫助。
Re:帶簡單減法的浮點數錯誤只是為了說明問題不是JMP問題,這是Excel中發生的事情。
| X |
ÿ |
X - Y公式 |
| 16.11 |
15.12 |
0.99000000000000000 |
| 15.29 |
15.18 |
0.10999999999999900 |
| 15.29 |
15.19 |
0.09999999999999960 |
Re:帶簡單減法的浮點數錯誤我明白。我的Round()函數示例僅用於說明處理浮點數和相關算法的有限精度的一種方法。您可以構建更豐富的解決方案來處理更複雜的情況。
你用過了嗎?救命 > 圖書 > 腳本指南要么救命 > 腳本索引查看Round()或Char()函數的功能?
Re:帶簡單減法的浮點數錯誤您可能想要閱讀此資源: JMP數值精度您可以找到其他流行軟件(如電子表格)的白皮書。這是一個知道問題但通常不是問題。
Re:帶簡單減法的浮點數錯誤不安靜,“誇大”它(以及它為什麼煩擾我)的原因是精確度取決於用戶輸入
如果他使用15.29mm和15.19mm,他將得到正確的0.1mm圓形(x,2)。
如果他使用0.01529m和0.01519m他會得到0m並且在他看到結果後可能會在我的門口站立* g *
我無法看到是否支持圓形或字符“有效數字”。
Re:帶簡單減法的浮點數錯誤在數學 ,簡單的算術將產生這些差異的精確結果:15.29 - 15.18 = 0.11和15.29 - 15。19 = 0.10。但是JMP的結果是有限精度算術在電腦裡。結果取決於實數如何表示為浮點數以及算術運算符如何工作。使用此表示。找到操作符的結果和數學結果不一致的情況並不困難。
JMP可能會使用標準浮點數字軟件庫或專用硬件浮點處理器來執行此類操作。
有些軟件使用擴展或“無限”精度(僅受物理資源限制),但它通常不會改變我們的統計方法中的實際結果,例如回歸。
在您的情況下,一個解決方案是在公式或腳本中舍入結果:
Round( 15.2900000 - 15.1900000, 2 )
然後你得到0.1的結果。問題解決了。