楼主: 楚韵荆风
9138 2

[问答] 大家注意到R中rep()函数的这个问题没? [推广有奖]

  • 4关注
  • 20粉丝

已卖:66份资源

教授

31%

还不是VIP/贵宾

-

威望
0
论坛币
2271 个
通用积分
7.6593
学术水平
54 点
热心指数
84 点
信用等级
41 点
经验
78962 点
帖子
1230
精华
0
在线时间
1281 小时
注册时间
2009-7-2
最后登录
2025-2-20

楼主
楚韵荆风 学生认证  发表于 2012-10-29 16:21:26 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
今天运行自己写的一段程序,尽然跑出这样的问题来了,老是提示我一个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

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

扫码加我 拉你入群

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

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

关键词:Integer Inte 有没有人 不知道 有没有 程序

共享是一种彼此的快乐

沙发
trier2006 发表于 2012-10-29 17:53:38
小数计算的时候,有时候会有类似问题。我只知道有这么回事,但没具体分析过。
最好的医生是自己,最好的药物是时间……

藤椅
qoiqpwqr 发表于 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好了
已有 1 人评分经验 收起 理由
ltx5151 + 20 热心帮助其他会员

总评分: 经验 + 20   查看全部评分

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2025-12-27 06:07