В 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 ()) никогда не нужно будет ничего усекать, и она всегда будет работать.