全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 R语言论坛
1499 6
2017-02-22
这个数列中的0.013那一项居然和数字0.013相差了10^-18,这到底是怎么回事
附件列表
无标题.png

原图尺寸 29.69 KB

无标题.png

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2017-2-22 11:28:13
应该是不同计算机精度导致
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2017-2-22 11:36:49
AlexYoung757 发表于 2017-2-22 11:28
应该是不同计算机精度导致
我两台电脑都是这个结果,一个是i7-4790k,另一个是6700k,都是64位windows8.1,这个不应该啊,我定义的是seq(0.01,0.03,0.003),存储变量应该就是0.013,为什么给我存储成了0.013+1.734723*10^-18 ?
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2017-2-22 12:43:14
大部分程序如果使用浮点位都是这样的,就是精度造成的。
可以参考help("==")
复制代码
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2017-2-23 12:08:19
boss0577 发表于 2017-2-22 12:43
大部分程序如果使用浮点位都是这样的,就是精度造成的。
可以参考help("==")
膜拜大神!
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2017-2-23 14:57:05
数值向量分为Double和integer两种,前者采用浮点计算。看下面例子你就知道差别了:
sqrt(2)^2-2  #doublel类型
[1] 4.440892e-16
as.integer(sqrt(2)^2)-2 #integer类型
[1] 0

sqrt(2)^2 == 2
[1] FALSE
as.integer(sqrt(2)^2) == 2
[1] TRUE

near(sqrt(2)^2,2) #double类型用near()函数进行近似比较
[1] TRUE

楼主明白没?几乎所有软件都是浮点运算
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

点击查看更多内容…
相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群