python - 模数和浮点数
问题描述
如何解释模数是通过说明“a”可以达到“b”多少次,而不是通过相乘,只是通过相加。
如果我们要找到20
from的模数,它会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
这将是20/1.3 = 15.384615
和15.384
时间乘以1.3
所以15.384615385 * 1.3 = 20
这个公式是不正确的,并且表明无法表达模数如何与浮点数一起运行,而是通过加起来1.3
和然后不通过20
,它会1.3
加倍15
= 19.5
。20 - 19.5 = 0.5
因此我们有一个精确的余数。
我想知道这种方法是否正确,Python如何解释模数?
解决方案
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))
。
浮点计算结果有时不准确也就不足为奇了。
推荐阅读
- python - 如何在 libvirt xml 中使用 ivshmem-plain?
- function - 如何从您的指标脚本中引用另一个指标中的函数?
- android - 侦听按钮单击并将片段与视图模型链接
- python - 如何在不使用枚举的情况下计算分数
- python - 如何在循环中动态设置数据框值
- mysql - 使用 db-migrate 包时如何保存数据?
- python - 将基本颜色列表与另一个颜色列表进行比较
- javascript - 为什么 Java 中的 selenium 的“executeAsyncScript(window.setTimeout(5000))”函数在 5 秒后保持下一个要执行的函数?
- java - 如何返回链表中的元素数
- javascript - 来自 NodeJS 的神秘未处理承诺警告