【发布时间】:2021-05-23 01:23:33
【问题描述】:
在 R 中,我想检查一个数字是否是另一个数字的倍数。这对整数很有效
> 124%%1
[1] 0
> 124%%2
[1] 0
但是由于某些神秘的原因不能很好地处理十进制数,知道为什么1.05%%0.05 不是 0 吗?
> 0.05%%0.05
[1] 0
> 1.05%%0.05
[1] 0.05
【问题讨论】:
在 R 中,我想检查一个数字是否是另一个数字的倍数。这对整数很有效
> 124%%1
[1] 0
> 124%%2
[1] 0
但是由于某些神秘的原因不能很好地处理十进制数,知道为什么1.05%%0.05 不是 0 吗?
> 0.05%%0.05
[1] 0
> 1.05%%0.05
[1] 0.05
【问题讨论】:
根据?"%%"
%% 和 x %/% y 可用于非整数 y,例如1 %/% 0.2,但结果会出现表示错误,因此可能取决于平台。因为 0.2 的 IEC 60559 表示是一个略大于 0.2 的二进制分数,所以 1 %/% 0.2 的答案应该是 4,但大多数平台给出 5。
【讨论】:
如果您期望结果为 0,那么您可能会对将两个参数乘以 100 的结果感到满意(使这些整数或至少接近它们。)
(100*1.05)%%(100*0.05)
[1] 0
请参阅@akrun 对“为什么”的回答。
【讨论】: