У 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?)
Якщо так: чи є кращий спосіб перетворити дубль в закруглений int, не ризикуючи усіканням?
Щось зрозуміло: Math.round (x) повертає довге, а не подвійне. Отже: Math.round () не може повернути число, схоже на 3.9999998. Тому int (Math.round ()) ніколи нічого не потрібно буде усікати і завжди працюватиме.