0
我看到這個在JavaScriptJavaScript的數學問題
2-(1/3 * 1) // => Returns 1.66666666667
但是,
4-(1/3 * 7) // => Returns 1.6666666667
這比以前的結果少了一個6
。這很糟糕,因爲這兩個表達式都等於5/3
我試圖用Python做同樣的事情,並且這兩個表達式都返回了相同的結果。
我看到這個在JavaScriptJavaScript的數學問題
2-(1/3 * 1) // => Returns 1.66666666667
但是,
4-(1/3 * 7) // => Returns 1.6666666667
這比以前的結果少了一個6
。這很糟糕,因爲這兩個表達式都等於5/3
我試圖用Python做同樣的事情,並且這兩個表達式都返回了相同的結果。
這是因爲中間體是不同數量級:
0.3333333333333333 * 1
#>>> 0.3333333333333333
0.3333333333333333 * 7
#>>> 2.333333333333333
這意味着第一將被舍入到比第二8倍更大的粒度。由於Python的repr
非常漂亮,並且精確到浮點數,所以它顯示爲10倍的粒度差異。
直觀地比較:
0.3333333333333333
2.333333333333333
看他們如何有相同數量的顯著的數字,但不同的小數位數。
當你做number - multiplication
時,你最終會「解除」這個值,所以它的相對誤差比以前更大,雖然確切的(絕對)誤差是相同的。
這就是您的IDE決定報告的任意精度。如果您關心以特定精度報告,請手動指定。 – CoryKramer 2014-09-20 22:10:58
是的。你的問題是什麼?如果你在結果中依賴於特定數量的六分之一,那麼你將處於非常不穩定的狀態。 – Borodin 2014-09-20 22:11:26
請問有人知道通常的*浮點精度*資源鏈接到? – Borodin 2014-09-20 22:13:36