【问题标题】:How does pandas / numpy round() work when decimal>=1?当小数> = 1时,pandas / numpy round() 如何工作?
【发布时间】:2019-04-28 08:37:34
【问题描述】:

我有一个熊猫系列

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

【问题讨论】:

标签: python pandas numpy rounding


【解决方案1】:

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

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

另一种舍入方式是:

int(number*10^precission+0.5)

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

【讨论】:

    【解决方案2】:

    一般来说,round() 经常失败,因为浮点数是不精确的估计。

    但在这种情况下,这是因为约定将所有数字(偶数)的一半向下舍入,以平衡舍入误差。

    You can pretty easily disable this behavior:

    圆形(x[, n]) x 四舍五入为 n 位,四舍五入为偶数。如果 n 省略,则默认为 0。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-01-15
      • 2014-03-12
      • 2013-06-03
      • 1970-01-01
      • 2017-07-13
      • 2016-09-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多