以下是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编辑过]
请注明:姓名-公司-职位
以便审核进群资格,未注明则拒绝
确实有点怪,
> 1000 * (.15 + .3)[1] 450这个结果还算是对的。
对啊,为什么一减去450出现的是科学计数法,而不是0呢!!!
哈哈!
大家只是按数学来想问题。实际上,R在计算上述公式时,先把数字转换为二进制,然后计算,显示或输出结果也是同样,只是反方向操作而已。
微小的误差,比如 -5.684342e-14就是在上述过程产生的。
我的理解不一定准确,大家可以参考一些R的书籍,基本都有相关的介绍。
round( 1000 * (.15 + .3) - 450 , 2 )
加上 round 限定他出來的小數位數