2015-01-27 5 views
2

Скажем, у меня есть следующие ...Java Standard на результат Кастинг Double к Int

double d = 1.6; 
int q = ((int) d); 

Будет ли это всегда падение только десятичную точку в соответствии со стандартом Java, или оно может округлить вверх или вниз в соответствии со стандартом (Что более или менее существует)?

ответ

6

Да, это приведет к сокращению десятичной точки. Это означает, что он округляет к нулю, поэтому он округляется, если он положительный, но он округляется, если он отрицательный.

См §5.1.3 в JLS:

В противном случае, если число с плавающей точкой не является бесконечность, значение с плавающей точкой округляется до целого значения V, округление к нулю с помощью IEEE 754 округло к нулю (§4.2.3).

0

Кастинг double к int всегда этажей значение, которое наибольшее целое число меньше, чем это, но попробуйте это:

int q = (int) Math.round(d); // rounded instead of floored