全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 R语言论坛
2229 7
2009-04-03

以下是R的程序和输出结果:

> 1000 * (.15 + .3) - 450
[1] -5.684342e-14

Q1:按常理结果应该是0,但输出结果却是一个科学计数法,我想是不是R系统考虑到精度的问题了。


> 1000*(.15 + .3) == 450
[1] FALSE

Q2:输出结果是一个逻辑形式,是不是“==”不能连接同一类型的表达式。

[此贴子已经被作者于2009-4-3 16:22:48编辑过]

二维码

扫码加我 拉你入群

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

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

全部回复
2009-4-3 20:27:00
呵呵这个很奇怪,你试试1000*(.25+.2)-450
出来的居然就是0
二维码

扫码加我 拉你入群

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

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

2009-4-3 22:35:00

确实有点怪,

> 1000 * (.15 + .3)
[1] 450
这个结果还算是对的。

二维码

扫码加我 拉你入群

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

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

2009-4-3 23:12:00

对啊,为什么一减去450出现的是科学计数法,而不是0呢!!!

二维码

扫码加我 拉你入群

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

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

2009-4-3 23:17:00
“==”是个逻辑运算符
二维码

扫码加我 拉你入群

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

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

2009-4-4 06:59:00

哈哈!

大家只是按数学来想问题。实际上,R在计算上述公式时,先把数字转换为二进制,然后计算,显示或输出结果也是同样,只是反方向操作而已。

微小的误差,比如 -5.684342e-14就是在上述过程产生的。

我的理解不一定准确,大家可以参考一些R的书籍,基本都有相关的介绍。

二维码

扫码加我 拉你入群

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

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

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

说点什么

分享

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