這是一個錯誤?當我四捨五入時,它實際上返回不同的結果。熊貓四捨五入,這是一個錯誤?
import pandas as pd
pd.set_option('precision', 10)
pd.DataFrame([[1.446450001],[1.44645]]).round(4)
結果
0
0 1.4465
1 1.4464
這是一個錯誤?當我四捨五入時,它實際上返回不同的結果。熊貓四捨五入,這是一個錯誤?
import pandas as pd
pd.set_option('precision', 10)
pd.DataFrame([[1.446450001],[1.44645]]).round(4)
結果
0
0 1.4465
1 1.4464
這是不是一個錯誤 - 更確切地說,這是一個無證的怪癖。
DataFrame.round使用罩,其中下numpy.around:
對於值圓形十進制值的正中間,numpy的舍入到最接近偶數值。因此1.5和2.5圓至2.0,-0.5和0.5圓爲0.0,等等
http://docs.scipy.org/doc/numpy-1.10.1/reference/generated/numpy.around.html
更多讀數@百科:https://en.wikipedia.org/wiki/Rounding#Round_half_to_even
有兩個不同的舍入策略
像你這樣的第一輪可能已經在學校中學到了它,在一段時間(以5
結尾)的值的一半處向上取整
第二回合下一甚至數
第一個策略有副作用,你在平均有正偏差,因爲中心始終關注更高。這是由第二個策略固定的,隨意決定舍入到下一個偶數值。
熊貓選擇使用numpy.around
它實現了第二個策略。
有沒有一所學校在熊貓學習四捨五入? – JOHN
不是一個錯誤。 1.44645可能會以二進制形式存儲爲下舍入。 – piRSquared
@piRSquared我該如何解決這個問題? – JOHN
@piRSquared不,這是錯誤的。這是關於舍入策略 – MaxNoe