this following question is from mock exam by RHE what is the value of the follwing expression ? MAth.round(Math.random()+2.50001); options are :- A. 2 B. 3 C. It is impossible to say the answer is b ie. ->3 my question is that when Math.random() method generate a random no. say 0.99999 on addition with 2.50001 it becomes 3.50 and after rounding the result will give 4 which is not in the option list . so what is the right answer please tell me the right answer thanks in advn. sunil
sandip karmarkar
Greenhorn
Joined: Jan 08, 2001
Posts: 26
posted
0
Hello Yes I also think that answer should be C and not b. Regards Sandip
Mihai T
Greenhorn
Joined: Jun 25, 2001
Posts: 4
posted
0
Hi, You are right: the expression could be evaluated to 3 or 4. The answer b (i.e. 3) is wrong. Try this two or three times:
public class Z { public static void main(String[] args) { int j = 0; for (int i = 0; i < 10000;i++) { j = (int)Math.round(Math.random() + 2.50001); if (j != 3) System.out.println("i = " + i + " j = " + j); } } }
Mihai T.
[This message has been edited by Mihai T (edited June 25, 2001).]
V Srinivasan
Ranch Hand
Joined: Aug 16, 2000
Posts: 99
posted
0
Hi Sunil, sandip & Mihai, The result is just because of Math.round. Math.round method always casts to either int or long and returns. What JLS says about Math.round : The result is rounded to an integer by adding 1/2, taking the floor of the result, and casting the result to type int. In other words, the result is equal to the value of the expression: (int)Math.floor(a + 0.5f) or (long)Math.floor(a + 0.5d) Hope this helps. Thanks and regards V.Srinivasan
Manfred Leonhardt
Ranch Hand
Joined: Jan 09, 2001
Posts: 1492
posted
0
Hi Sunil, As you have mentioned, the book answer is incorrect. The correct answer is C. It has been corrected in other printings. When you buy a book, always look for the Errata on-line because all books have errors! Find the errata here for RHE book. Errata for Complete Java� 2 Certification Study Guide Regards, Manfred.
V Srinivasan
Ranch Hand
Joined: Aug 16, 2000
Posts: 99
posted
0
Sorry friends, I am wrong.
I agree. Here's the link: http://ej-technologies/jprofiler - if it wasn't for jprofiler, we would need to
run our stuff on 16 servers instead of 3.