【问题标题】:in R, why does %% behave differently for decimal numbers?在 R 中,为什么 %% 对十进制数的行为不同?
【发布时间】: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 division


【解决方案1】:

根据?"%%"

%% 和 x %/% y 可用于非整数 y,例如1 %/% 0.2,但结果会出现表示错误,因此可能取决于平台。因为 0.2 的 IEC 60559 表示是一个略大于 0.2 的二进制分数,所以 1 %/% 0.2 的答案应该是 4,但大多数平台给出 5。

【讨论】:

    【解决方案2】:

    如果您期望结果为 0,那么您可能会对将两个参数乘以 100 的结果感到满意(使这些整数或至少接近它们。)

    (100*1.05)%%(100*0.05)
    [1] 0
    

    请参阅@akrun 对“为什么”的回答。

    【讨论】:

      猜你喜欢
      • 2016-06-09
      • 1970-01-01
      • 2020-04-01
      • 1970-01-01
      • 1970-01-01
      • 2016-11-12
      • 2013-10-30
      • 2017-10-15
      • 1970-01-01
      相关资源
      最近更新 更多