1
我正在使用斯威夫特計算器,但我遇到了一個小問題:當兩個數相乘時,我的結果與普通計算器的結果不一樣。如何在Swift中乘以數字?
例如:
在斯威夫特:
0.333328247070312 * 16 = 5.33325195312499
在常規的計算器:
0.333328247070312 * 16 = 5.333251953
我應該怎麼做才能得到相同的結果,如雨燕常規計算器?
我正在使用斯威夫特計算器,但我遇到了一個小問題:當兩個數相乘時,我的結果與普通計算器的結果不一樣。如何在Swift中乘以數字?
例如:
在斯威夫特:
0.333328247070312 * 16 = 5.33325195312499
在常規的計算器:
0.333328247070312 * 16 = 5.333251953
我應該怎麼做才能得到相同的結果,如雨燕常規計算器?
您的「常規計算器」在結果打印中看起來不對或很奇怪,所以,您不應該依賴它。我重新檢查你在Python3計算這是衆所周知的計算都在binary64雙和打印最精確的十進制形式:比雨燕輸出
>>> 0.333328247070312 * 16
5.333251953124992
它更詳細的(一個數字)。你的輸出也不能被驗證爲binary32計算,因爲後者有7個正確的十進制數字,並且通常不會打印更多的數字。這個計算器是什麼?由於其自定義的6字節浮點數,我假設一些基於Pascal的工具。
試着讓計算器打印最詳細的表格。如果失敗,請將其丟棄並使用最精確的工具進行驗證,或者如果您的任務確實得到相同的結果,請詳細瞭解其處理過程。
浮點算法不精確。 [每個計算機程序員應該知道的浮點數](http://blog.reverberate.org/2014/09/what-every-computer-programmer-should.html)。 –
感謝每一個發現我使用Double類型的解決方案,而不是浮動 – abedAssa