全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 R语言论坛
9090 2
2012-10-29
今天运行自己写的一段程序,尽然跑出这样的问题来了,老是提示我一个rep命令出错,我就纳闷了,然后试了一下竟然得到这样的结果:
> rep(1, 40*(1-.8))
[1] 1 1 1 1 1 1 1
> rep(1,8)
[1] 1 1 1 1 1 1 1 1
> 40*(1-.8)
[1] 8
显然中间的是我们想要的结果,但是第一个怎么就会不一样呢?进一步试了一下,竟然
> as.integer(40*(1-.8))
[1] 7

不知道有没有人遇到过这样的问题?
请版主版主讨论一下
二维码

扫码加我 拉你入群

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

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

全部回复
2012-10-29 17:53:38
小数计算的时候,有时候会有类似问题。我只知道有这么回事,但没具体分析过。
二维码

扫码加我 拉你入群

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

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

2012-10-29 21:58:47
as.integer的帮助里

Non-integral numeric values are truncated towards zero (i.e., as.integer(x) equals trunc(x) there), and imaginary parts of complex numbers are discarded (with a warning).

其次
> 40*(1-0.8)-8
[1] -1.776357e-15
精度的问题

在这里面不要用as.integer,用round好了
二维码

扫码加我 拉你入群

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

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

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

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