全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 R语言论坛
1227 4
2020-06-27
悬赏 10 个论坛币 已解决


03.png
如图所示

  factors2<-c(50,25,20,10,5,4,2,1)
用max(a1,b1) (相当于66),对上面这个向量取余数计算,最后两个元素为2 和1

但是正常而言,最后两个应该都是0
如果用数字66直接对factor2取余数计算,就可以得到正确的答案。

请问这个是为什么,多谢!


附上这一段代码,
x<-0.34
  a1<-100*x
  b1<-100*(1-x)
  factors2<-c(50,25,20,10,5,4,2,1)
  resident2<-(max(a1,b1))%%factors2
  position<-which(resident2==0)[1]




02.png

原图尺寸 5.07 KB

02.png

最佳答案

maths_hjxk 查看完整内容

这里涉及到浮点数问题。 max(a1,b1)是个浮点数,它与66相差-1.421085e-14,即小于66。就导致它与66的求余结果有些不同。 要保证max(a1,b1)与66的求余结果,只能建议如下方法
二维码

扫码加我 拉你入群

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

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

全部回复
2020-6-27 22:32:09
这里涉及到浮点数问题。
max(a1,b1)是个浮点数,它与66相差-1.421085e-14,即小于66。就导致它与66的求余结果有些不同。
要保证max(a1,b1)与66的求余结果,只能建议如下方法
复制代码

二维码

扫码加我 拉你入群

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

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

2020-6-28 10:53:42
这个确实是bug,但也可以说不是bug。
这种情况,可能是R浮点运算导致的。重点是0.34。
你在rstudio中,试一下这个代码
as.integer(100*(1-0.34))
看看结果是什么,是不是65?好玩吧?
二维码

扫码加我 拉你入群

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

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

2020-6-28 14:16:45
maths_hjxk 发表于 2020-6-27 22:32
这里涉及到浮点数问题。
max(a1,b1)是个浮点数,它与66相差-1.421085e-14,即小于66。就导致它与66的求余结 ...
多谢,方便多说一下吗?为什么max(a1,b1)是个浮点数,它与66相差-1.421085e-14,即小于66。
二维码

扫码加我 拉你入群

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

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

2020-6-28 15:11:47
江夏雁 发表于 2020-6-28 14:16
多谢,方便多说一下吗?为什么max(a1,b1)是个浮点数,它与66相差-1.421085e-14,即小于66。
R中数值运算一般都是浮点运算,可以百度一下浮点数或浮点运算
简单的说除了指定情况外(加L或冒号运算),都是近似数,比如在R中根号的平方并不等于2,只是近似
二维码

扫码加我 拉你入群

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

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

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

说点什么

分享

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