For some reason my function "isint" will not work for some fractions. Here is the code:
isint<-function(x){if(x!=round(x)){return(0)}else{return(1)}}
isint(1.05/1.05) gives me 1 however isint(1040.55/1.05) gives me 0.
Why is this the case?
Check this.
options(digits = 20)
1040.55/1.05
[1] 990.99999999999989
Since 991!=990.99999999999989 you get 0
 
    
     
    
    This is just because arithmetic base-2 is not exact base-10.  A better test would be to use !all.equal(x,round(x)), which allows for small discrepancies.  For example, compare the following...
> all.equal(1040.55/1.05,991)
[1] TRUE
> identical(1040.55/1.05,991)
[1] FALSE
So, try isint<-function(x){if(!all.equal(x,round(x))){return(0)}else{return(1)}}
