This week's book giveaway is in the OCAJP forum.We're giving away four copies of Programmer's Guide to Java SE 8 Oracle Certified Associate (OCA) and have Khalid A Mughal & Rolf W Rasmussen on-line!See this thread for details.
Win a copy of Programmer's Guide to Java SE 8 Oracle Certified Associate (OCA) this week in the OCAJP forum!

# RHE Final #27

Milena Khlabystova
Greenhorn
Posts: 9
In RHE Final Exam Q#27 asks:
What is the value of the following expression?
Math.round(Math.random() + 2.50001);
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

Jane Griscti
Ranch Hand
Posts: 3141
Hi Milena,
I ran some code to test your theory

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

Milena Khlabystova
Greenhorn
Posts: 9
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
Posts: 9
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
Posts: 3141
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
Posts: 1492
Hi Milena,
The problem has already been fixed in the errata. Make sure you check it before you go any further.