How to cast a double to an int in Java by rounding it down?

Viewed 271190

I need to cast a double to an int in Java, but the numerical value must always round down. i.e. 99.99999999 -> 99

9 Answers

Casting to an int implicitly drops any decimal. No need to call Math.floor() (assuming positive numbers)

Simply typecast with (int), e.g.:

System.out.println((int)(99.9999)); // Prints 99

This being said, it does have a different behavior from Math.floor which rounds towards negative infinity (@Chris Wong)

(int)99.99999

It will be 99. Casting a double to an int does not round, it'll discard the fraction part.

Math.floor(n)

where n is a double. This'll actually return a double, it seems, so make sure that you typecast it after.

This works fine int i = (int) dbl;

In this question:

1.Casting double to integer is very easy task.

2.But it's not rounding double value to the nearest decimal. Therefore casting can be done like this:

double d=99.99999999;
int i=(int)d;
System.out.println(i);

and it will print 99, but rounding hasn't been done.

Thus for rounding we can use,

double d=99.99999999;
System.out.println( Math.round(d));

This will print the output of 100.

Related