This week's book giveaway is in the OO, Patterns, UML and Refactoring forum. We're giving away four copies of Refactoring for Software Design Smells: Managing Technical Debt and have Girish Suryanarayana, Ganesh Samarthyam & Tushar Sharma on-line! See this thread for details.

Hey people, I am new to Java (and this forum) so being a newbie I'd like to ask a real newbie question; how do I round up a numeber in Float? For example I have the number 2.339 but I'd like to display it as 2.3, how do I do this?

Big NRG Welcome to the Java Ranch, we hope you�ll enjoy visiting as a regular however, your name is not in keeping with our naming policy here at the ranch. Please change your display name to an appropriate name as shown in the policy. Thanks again and we hope to see you around the ranch!!

Dave

Adam Kania
Greenhorn

Joined: Sep 24, 2002
Posts: 2

posted

0

Sorry, Didn't notice the policy (and I'm just so damned used to the nick) I hope this is better! Now could someone pls answer my question, better yet I'll ask another one; If I have the total amount of seconds hwo can I display the amount of hours, minutes and seconds that makes up? Thanks!

There might be a round() method in the Float class, but you can also easily create your own: public float round(float f, int decimals) { int i = (int)(f * Math.pow(10, decimals) + 0.5); return (float)i / Math.pow(10, decimals); } I'm coding this from memory, so I hope it's correct. First I multiply the number by a power of 10 to move the digit I want to round to the one's place. Then I add 0.5 before I truncate the number to an int. This ensures that the number is "rounded up" if the tenth's place is more than 0.5. If the tenth's place is less than 0.5, the number is rounded down. Then I convert the int back to a float by dividing by the appropriate power of 10. HTH Layne

Hint: you can use the / division and % modulo operators. If I have, say, 5 % 2 it returns the remainder, which is 1. if it is perfectly divisible then it returns 0.

The Math class has ceil(), floor(), and round() functions. Make sure you use the right one. You talk of "rounding up", but you want 2.339 to display as 2.3. That's either rounding down or rounding to nearest, but it isn't rounding up.

Ron Newman - SCJP 1.2 (100%, 7 August 2002)

Ron Newman
Ranch Hand

Joined: Jun 06, 2002
Posts: 1056

posted

0

Also, take a look at the java.text.DecimalFormat class. You may want to play around with this simple program, to learn how formats work. It takes two command line arguments. The first is a number, the second is a format string:

[ September 24, 2002: Message edited by: Ron Newman ]

The J2SE API Documentation that fully describes what Ron and others have mentioned can be found at http://java.sun.com/j2se/1.4.1/docs/api/ . Learning to reference the API documentation is a most valuable thing for a Java programmer to learn to do.