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
Guess what? Result = 4! When your not sure of something, best teacher is the compiler ------------------ Jane Griscti Sun Certified Programmer for the Java� 2 Platform
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
Milena Khlabystova
Greenhorn
Joined: Apr 26, 2001
Posts: 9
posted
0
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...
Jane Griscti
Ranch Hand
Joined: Aug 30, 2000
Posts: 3141
posted
0
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
Manfred Leonhardt
Ranch Hand
Joined: Jan 09, 2001
Posts: 1492
posted
0
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.