我有一个熊猫系列
In [1]: import pandas as pd
In [2]: s = pd.Series([1.3, 2.6, 1.24, 1.27, 1.45])
我需要对数字进行舍入。
In [4]: s.round(1)
Out[4]:
0 1.3
1 2.6
2 1.2
3 1.3
4 1.4
dtype: float64
它适用于1.27
,但是1.45
被舍入为1.4
,它是浮动类型精度损失的问题吗?如果是,我该如何处理这个问题?
这不是错误,但是因为,大多数十进制数字不能完全表示为浮点数。
https://www.programiz.com/python-programming/methods/built-in/round
另一种舍入方式是:
int(number*10^precission+0.5)
但是,你可能会遇到类似的问题,因为谁知道1.45是否接近1.4499999 ..或1.4500 ... 1
一般来说,round()
经常因浮动估计不准确而失败。
在这种情况下,这是因为一个惯例,所有数字(均匀)的一半被向下舍入,以平衡舍入误差。
You can pretty easily disable this behavior:
round(x [,n])x舍入为n位数,舍入为偶数的一半。如果省略n,则默认为0。