出于某种原因我的功能" isint"不适用于某些分数。这是代码:
isint<-function(x){if(x!=round(x)){return(0)}else{return(1)}}
isint(1.05 / 1.05)给我1但是isint(1040.55 / 1.05)给我0。
为什么会这样?
答案 0 :(得分:1)
答案 1 :(得分:0)
这只是因为算术基数-2不是精确的基数-10。更好的测试是使用!all.equal(x,round(x))
,这允许小的差异。例如,比较以下内容......
> all.equal(1040.55/1.05,991)
[1] TRUE
> identical(1040.55/1.05,991)
[1] FALSE
所以,试试isint<-function(x){if(!all.equal(x,round(x))){return(0)}else{return(1)}}