W Javie chcę zamienić podwójną na liczbę całkowitą, wiem, czy zrobisz to:
double x = 1.5;
int y = (int)x;
otrzymujesz y = 1. Jeśli to zrobisz:
int y = (int)Math.round(x);
Prawdopodobnie dostaniesz 2. Jednak zastanawiam się: ponieważ podwójne reprezentacje liczb całkowitych wyglądają czasami jak 1,9999999998 lub coś podobnego, czy istnieje możliwość, że rzutowanie liczby podwójnej utworzonej za pomocą Math.round () nadal spowoduje skrócenie liczby w dół, a raczej niż zaokrąglona liczba, której szukamy (tj .: 1 zamiast 2 w przedstawionym kodzie)?
(i tak, mam na myśli to jako takie: czy jest jakaś wartość dla x, gdzie y pokaże wynik, który jest obciętą, a nie zaokrągloną reprezentacją x?)
Jeśli tak: czy istnieje lepszy sposób na zrobienie podwójnej liczby w zaokrągloną liczbę całkowitą bez ryzyka obcięcia?
Coś wymyśliłem: Math.round (x) zwraca long, a nie double. Stąd: Math.round () nie może zwrócić liczby wyglądającej jak 3.9999998. Dlatego int (Math.round ()) nigdy nie będzie musiało niczego obcinać i zawsze będzie działać.