преобразование двойного числа в целое число в java

В Java я хочу преобразовать двойное число в целое, я знаю, если вы сделаете это:

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) возвращает long, а не double. Следовательно: Math.round () не может вернуть число вида 3.9999998. Следовательно, int (Math.round ()) никогда не нужно будет ничего усекать, и она всегда будет работать.

109
задан Eric Leschinski 25 September 2015 в 17:22
поделиться