小数> = 1时,pandas / numpy round()如何工作?

问题描述 投票:1回答:2

我有一个熊猫系列

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,它是浮动类型精度损失的问题吗?如果是,我该如何处理这个问题?

python pandas numpy rounding
2个回答
2
投票

这不是错误,但是因为,大多数十进制数字不能完全表示为浮点数。

https://www.programiz.com/python-programming/methods/built-in/round

另一种舍入方式是:

int(number*10^precission+0.5)

但是,你可能会遇到类似的问题,因为谁知道1.45是否接近1.4499999 ..或1.4500 ... 1


0
投票

一般来说,round()经常因浮动估计不准确而失败。

在这种情况下,这是因为一个惯例,所有数字(均匀)的一半被向下舍入,以平衡舍入误差。

You can pretty easily disable this behavior

round(x [,n])x舍入为n位数,舍入为偶数的一半。如果省略n,则默认为0。

© www.soinside.com 2019 - 2024. All rights reserved.