这是一个错误?当我四舍五入时,它实际上返回不同的结果。熊猫四舍五入,这是一个错误?
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