In RHE Final Exam Q#27 asks: What is the value of the following expression? Math.round(Math.random() + 2.50001); Possible answers are a) 2 b) 3 c) It is impossible to say. The correct answer in the book is b) and the following explanation is provided: " Math.random() returns a double greater than or equal to 0.0 and less than 1.0. Math.random() + 2.50001 is a double greater than 2.5 and less than 3.5. Math.round() of any number between but not including 2.5 and 3.5 is 3." However, what happens if Math.random() returns 0.999999? If I am not mistaken, 0.999999 + 2.50001 = 3.500009 which should round up to 4, not 3. Am I missing something? Thanks, Milena
Thanks, Jane. That's what I thought... and ran the exact same code . I thought that may be I was missing something in Math.random() method and/or precision mechanism, but didn't really want to run a program for days in hope that Math.random() at some point returns 0.999999 (hmm... what's the probability of that?) and proves my point. Thanks again, Milena
Joined: Apr 26, 2001
Um... I obviously have to do more programming... What I thought would be a day turned out to be a second. Now I feel embarassed...
Joined: Aug 30, 2000
Hi Milena, Don't be ... I ran the code as I did for the same reason; didn't want to wait for random to return .999999
Joined: Jan 09, 2001
Hi Milena, The problem has already been fixed in the errata. Make sure you check it before you go any further. Click Here! Regards, Manfred.