В Java я хочу преобразовать double в целое число, я знаю, если вы сделаете это:
double x = 1.5;
int y = (int)x;
, вы получите y = 1.Если вы сделаете это:
int y = (int)Math.round(x);
Скорее всего, вы получите 2. Однако мне интересно: так как двойные представления целых чисел иногда выглядят как 1.9999999998 или что-то еще, есть ли вероятность, что приведение двойного числа создано с помощью Math.round () будет по-прежнему приводить к усеченному числу вниз, а не к искомому округленному числу (т.е.: 1 вместо 2 в представленном коде)?
(и да, я имею в виду этотаким образом: существует ли любое значение для x, где y покажет результат, который является усеченным, а не округленным представлением x?)
Если так: есть ли лучший способпревратить двойное число в округленное целое, не рискуя усечь?
Что-то понял: Math.round (x) возвращает длинное, а не двойное число.Следовательно: Math.round () не может вернуть число, похожее на 3.9999998.Поэтому int (Math.round ()) никогда не нужно будет ничего обрезать, и он всегда будет работать.