В 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?)
Если это так: есть ли лучший способ сделать двойной округленный int без риска усечения?
Выявлено что-то: Math.round(x) возвращает длинный, а не двойной. Следовательно: для Math.round() невозможно вернуть число, похожее на 3.9999998. Поэтому int (Math.round()) никогда не будет нуждаться в усечении всего и всегда будет работать.