2024-04-26 21:28:48 发布
网友
我已经弄清楚了代码,并且找到了一种方法来解决k > 6的最大分母非常大的问题。但是当我的代码加起来的时候
k > 6
1/float(2) + 1/float(3) + 1/float(7) + 1/float(42)
python说它不等于1,但它应该等于。为什么python认为其他的和等于1而不是这个?你知道吗
python
1
在对任何十进制值进行严格比较时,您需要非常小心。计算机不提供无限精度,因此您的参数加起来可能是0.99999998而不是1。那么比较可能会失败。你知道吗
0.99999998
因此,您应该始终比较delta的允许差异,例如1 - 0.99999998 < delta其中delta = 0.0001或类似的内容。你知道吗
delta
1 - 0.99999998 < delta
delta = 0.0001
这是因为你要求的是浮点运算,当舍入错误加起来,你会得到错误的答案。你知道吗
使用https://docs.python.org/3/library/fractions.html模块获得真正的分数,舍入问题应该会消失。你知道吗
在对任何十进制值进行严格比较时,您需要非常小心。计算机不提供无限精度,因此您的参数加起来可能是
0.99999998
而不是1
。那么比较可能会失败。你知道吗因此,您应该始终比较
delta
的允许差异,例如1 - 0.99999998 < delta
其中delta = 0.0001
或类似的内容。你知道吗这是因为你要求的是浮点运算,当舍入错误加起来,你会得到错误的答案。你知道吗
使用https://docs.python.org/3/library/fractions.html模块获得真正的分数,舍入问题应该会消失。你知道吗
相关问题 更多 >
编程相关推荐