问题
比较浮点数通常未能如你所想。
比如:
0.3 == 3*.1
#> [1] FALSE
(0.1 + 0.1 + 0.1) - 0.3
#> [1] 5.551115e-17
x <- seq(0, 1, by=.1)
x
#> [1] 0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0
10*x - round(10*x)
#> [1] 0.000000e+00 0.000000e+00 0.000000e+00 4.440892e-16 0.000000e+00 0.000000e+00
#> [7] 8.881784e-16 8.881784e-16 0.000000e+00 0.000000e+00 0.000000e+00
方案
不存在通用的解决方案,因为这个问题通常是由于非整数(浮点数)在计算机和R中的存储方式所导致的(数据都是以二进制存储在计算机的数据单元中,整数与浮点数的方式应该是存在差异的,整数好像一般是以反码的形式存储,浮点数机制略有不同吧,忘记了~有兴趣的小伙伴下方解释一下哇)。
可以通过网址http://www.mathworks.com/support/tech-notes/1100/1108.html查阅更多信息。 虽然里面使用Matlab代码写的,但是基本与R是一致的。
原文链接: http://www.cookbook-r.com/Numbers/Comparing_floating_point_numbers/
7 条评论
《漂亮的推理》大陆综艺高清在线免费观看:https://www.jgz518.com/xingkong/53816.html
你的文章内容非常卖力,让人点赞。 http://www.55baobei.com/DEqG4Fofbm.html
《成龙历险记第四季》欧美动漫高清在线免费观看:https://www.jgz518.com/xingkong/50563.html
你的文章充满了智慧,让人敬佩。 http://www.55baobei.com/ZugqxZEarq.html
《我一直知道你去年夏天干了什么》恐怖片高清在线免费观看:https://www.jgz518.com/xingkong/129548.html
你的才华让人瞩目,期待你的更多文章。 http://www.55baobei.com/syTjow881N.html
真棒!