If you simply
cast a floating value to an
integer value, Java will truncate the value. A value like 3.999999
casted to an int
or long
will
give 3, not 4. To round these properly, use Math.round( )
. There are two forms; if you give it a
double
, you get a long
result.
If you give it a float
, you get an
int
.
What if you don’t like the rounding rules used by
round
? If you wanted to round numbers greater than
0.54 instead of the normal 0.5, you could write your own version of
round( )
:
// Round.java /** Round a number up if its fraction exceeds this threshold. */ public static final double THRESHOLD = 0.54; /* Return the closest long to the argument. * ERROR CHECKING OMITTED. */ static long round(double d) { long di = (long)Math.floor(d); // integral value below (or ==) d if ((d - di) > THRESHOLD) return di + 1; else return di; }
If you need to display a number with less precision than it normally
gets, you will probably want to use a
DecimalFormat
object.
18.223.206.225