问题描述
模数的解释方式是说“ a”可以达到“ b”多少次,而不是乘以,而只需加起来即可。
如果我们要从20
中找到1.3
的模数,它将相加1.3 + 1.3 +...+ 1.3 = 19.5
,其中20-19.5
将是0.5
。
但是,如果我们操作每个人都用模数解释的公式,那就是通过除以乘以然后得到余数,我们将无法获得确切的数字,例如:
6%2 = 0
和7%2 = 1
,因为6/2 = 3
次和3*2 = 6
,这就是答案为0和1的原因,但是如果我们使用20 % 1.3
,则它将为{{ 1}}和20/1.3 = 15.384615
乘以15.384
的时间就是1.3
,因此此公式不成立,显示了无法表示模数如何使用浮点数进行运算,而是将{{1 }},然后不通过15.384615385 * 1.3 = 20
,它将使1.3
的添加次数20
= 1.3
。 15
因此有一个确切的余数。
我想知道这种方法是否正确,Python如何解释模数?
解决方法
20%1.3这将是20 / 1.3 = 15,384615和15,384 乘以1,3就是15,384615385 * 1,3 = 20因此这个公式 是不正确的……
我想知道这种方法是否正确
您的计算不完整;因此结论是错误的。
您必须取整数部分i。 e。 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))
得到相同的输出。
浮点计算结果有时不准确也就不足为奇了。