This week's book giveaway is in the OCPJP forum. We're giving away four copies of OCA/OCP Java SE 7 Programmer I & II Study Guide and have Kathy Sierra & Bert Bates on-line! See this thread for details.
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