【问题标题】:Pandas series giving incorrect sum [duplicate]熊猫系列给出不正确的总和[重复]
【发布时间】:2018-11-20 18:00:11
【问题描述】:

为什么这个 Pandas 系列给出 sum = .99999999 而答案是 1。在我的程序中,我需要断言“总和等于 1”。而且,即使条件正确,断言也会失败。

s = pd.Series([0.41,0.25,0.25,0.09])
print("Pandas version = " + pd.__version__)
print(s)
print(type(s))
print(type(s.values))
print(s.values.sum())

输出是:

Pandas version = 0.23.4
0    0.41
1    0.25
2    0.25
3    0.09
dtype: float64
<class 'pandas.core.series.Series'>
<class 'numpy.ndarray'>
0.9999999999999999

【问题讨论】:

    标签: python pandas series numpy-ndarray


    【解决方案1】:

    使用np.isclose 确定两个值是否任意接近。这是浮点数如何存储在机器中的残余

    【讨论】:

    • 对此进行扩展,大多数内置浮点类型并不完全精确。它们不能总是准确地代表计算的结果。这意味着你不应该在不使用像 np.isclose 那样的 epsilon 值(可接受的错误范围)的情况下进行比较。如果您必须得到精确相加的结果,您应该使用 decimal 之类的东西。
    • 非常感谢 Ian Quah 和 @Wieschie 的投入。
    猜你喜欢
    • 2018-11-08
    • 2018-05-14
    • 2018-04-24
    • 2013-01-01
    • 2018-01-01
    • 1970-01-01
    • 2017-12-09
    • 1970-01-01
    • 2021-11-11
    相关资源
    最近更新 更多