在R中,为什么%%对十进制数的行为不同?
在 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,但结果受制于表示错误,因此可能与平台有关。因为 IEC 60559 表示 0.2 是一个略大于 0.2 的二进制分数,所以 1%/% 0.2 的答案应该是 4,但大多数平台给出 5。