首页 > 解决方案 > 模数和浮点数

问题描述

如何解释模数是通过说明“a”可以达到“b”多少次,而不是通过相乘,只是通过相加。

如果我们要找到20from的模数,它会1.3加起来就是。1.3 + 1.3 +...+ 1.3 = 19.520-19.50.5

但是如果我们操作大家用模数解释的公式,也就是除以相乘再取余数,就不会得到一个准确的数,例如:

6%2 = 0并且7%2 = 1因为6/2 = 3时间和3*2 = 6,这就是答案是 0 和 1 的原因,但是如果我们使用20 % 1.3这将是20/1.3 = 15.38461515.384时间乘以1.3所以15.384615385 * 1.3 = 20这个公式是不正确的,并且表明无法表达模数如何与浮点数一起运行,而是通过加起来1.3和然后不通过20,它会1.3加倍15= 19.520 - 19.5 = 0.5因此我们有一个精确的余数。

我想知道这种方法是否正确,Python如何解释模数?

标签: pythonmodulus

解决方案


20 % 1.3 这将是 20/1.3 = 15,384615 和 15,384 乘以 1,3 是 15,384615385 * 1,3 = 20 因此这个公式不正确......</p>

我想知道这种方法是否正确

你的计算不完整;因此结论是错误的。

您必须取整数部分,即 15,乘以 1.3,得到 19.5,然后从 20 中减去。这如预期的那样得到 0.5。

对于 Python 的实现,请参见float_rem(). 它用于fmod()计算。输出表示由 生成float_repr(),它调用PyOS_double_to_string().
我们得到与 C 表达式相同的输出printf("%.17g\n", fmod(20, 1.3))

浮点计算结果有时不准确也就不足为奇了。


推荐阅读