Python算法计算形式1/r的k个分数,求和为1

2024-04-26 21:28:48 发布

您现在位置:Python中文网/ 问答频道 /正文

我已经弄清楚了代码,并且找到了一种方法来解决k > 6的最大分母非常大的问题。但是当我的代码加起来的时候

1/float(2) + 1/float(3) + 1/float(7) + 1/float(42)

python说它不等于1,但它应该等于。为什么python认为其他的和等于1而不是这个?你知道吗


Tags: 方法代码float分母
2条回答

在对任何十进制值进行严格比较时,您需要非常小心。计算机不提供无限精度,因此您的参数加起来可能是0.99999998而不是1。那么比较可能会失败。你知道吗

因此,您应该始终比较delta的允许差异,例如1 - 0.99999998 < delta其中delta = 0.0001或类似的内容。你知道吗

这是因为你要求的是浮点运算,当舍入错误加起来,你会得到错误的答案。你知道吗

使用https://docs.python.org/3/library/fractions.html模块获得真正的分数,舍入问题应该会消失。你知道吗

相关问题 更多 >