Win a copy of The Way of the Web Tester: A Beginner's Guide to Automating Tests this week in the Testing forum!

Float

Greenhorn
Posts: 2
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?

Dave Vick
Ranch Hand
Posts: 3244
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!!

Greenhorn
Posts: 2
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!

Layne Lund
Ranch Hand
Posts: 3061
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

Anthony Villanueva
Ranch Hand
Posts: 1055
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.

Ron Newman
Ranch Hand
Posts: 1056
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
Ranch Hand
Posts: 1056
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 ]

Dirk Schreckmann
Sheriff
Posts: 7023
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.