R中的模错误
可能重复:R中的模错误,r,modulo,R,Modulo,可能重复: 刚刚注意到R中的这个错误。我猜这是0.6的表示方式,但是有人知道到底发生了什么吗 根据R: 0.3 %% 0.2 = 0.1 0.4 %% 0.2 = 0 0.5 %% 0.2 = 0.1 **0.6 %% 0.2 = 0.2** 0.7 %% 0.2 = 0.1 0.8 %% 0.2 = 0 发生了什么事?除了@joshua Ulrich的评论 从?'%%' %%和x%/%y可用于非整数y,例如1%/%0.2,但结果可能存在表示错误,因此可能取决于平台。由于0.2的IEC 60
刚刚注意到R中的这个错误。我猜这是0.6的表示方式,但是有人知道到底发生了什么吗 根据R:
0.3 %% 0.2 = 0.1
0.4 %% 0.2 = 0
0.5 %% 0.2 = 0.1
**0.6 %% 0.2 = 0.2**
0.7 %% 0.2 = 0.1
0.8 %% 0.2 = 0
发生了什么事?除了@joshua Ulrich的评论 从
?'%%'
%%和x%/%y可用于非整数y,例如1%/%0.2,但结果可能存在表示错误,因此可能取决于平台。由于0.2的IEC 60059表示法是一个略大于0.2的二进制分数,因此1%/%0.2的答案应为4,但大多数平台给出5
也和我们为什么得到这个相似
> .1 + .1 + .1 == .3
[1] FALSE
正如@Ben Boker指出的,您可能需要使用
> 3:8 %% 2 / 10
[1] 0.1 0.0 0.1 0.0 0.1 0.0
@约书亚:这真的应该是一个答案,而不仅仅是一个评论+1.一个新标签“r-faq-7.31”看起来对我越来越有用了…@Gsee,我不认为这是重复的。背后的原因是一样的,但如果有人在谷歌上搜索这个问题,他们不一定会找到另一个答案。@Ricardosporta,这就是为什么我们以重复的方式关闭。当他们搜索模时,他们会找到这个,它会链接到主Q,这是它的一个副本。关闭和删除不是一回事。而且(正如现在删除的答案中指出的那样),“解决方案”是尽可能使用整数算法:
6%%2
而不是0.6%%0.2
是的,最后这样做了。谢谢。这似乎有效:Mod=n)返回(n);n、 数字