> -----Original Message-----
> From: r-help-boun...@r-project.org [mailto:r-help-boun...@r-project.org]
> On Behalf Of Ying Zheng
> Sent: Wednesday, November 28, 2012 6:11 PM
> To: r-help@r-project.org
> Subject: [R] Ceiling function gives me wrong answer
> 
> Hi all,
> 
> I have a very simple code, but gives a wrong answer.
> 
> a=1000
> b=1000^(1/3)
> c=ceiling(a/b)
> 
> then c=101,
> 
> if change the code to be
> a=1000
> b=10
> c=ceiling(a/b)
> 
> then c=100 is fine.
> 
> Thank you for the help.
> 

This is another variation on FAQ 7.31.  You are trying to calculate the cube  
root using a power of 1/3.  But 1/3 cannot be represented exactly in a finite 
binary floating-point system.  If you print the value of b with enough digits 
you will see that it is not equal to 10 because the representation of the value 
1/3 ends up being slightly smaller that one-third.

> print(1/3, digits=20)
[1] 0.33333333333333331483
>
> b <- 1000^(1/3)
> print(b, digits=20)
[1] 9.9999999999999982236


Hope this is helpful,

Dan

Daniel Nordlund
Bothell, WA USA
 

______________________________________________
R-help@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.

Reply via email to