Jak rzucić podwójne do int w Javie zaokrąglając go w dół?

Muszę rzucić podwójne do int w Javie, ale wartość liczbowa musi zawsze zaokrąglać w dół. tj. 99.99999999 - > 99

Author: Joren, 2010-01-27

8 answers

Rzutowanie do int w domyśle powoduje spadek liczby dziesiętnej. Nie musisz dzwonić do matmy.floor () (zakładając liczby dodatnie)

Po prostu wpisz za pomocą (int), np.:

System.out.println((int)(99.9999)); // Prints 99

To powiedziawszy, ma inne zachowanie od Math.floor, które zaokrągla się w kierunku negatywnej nieskończoności (@Chris Wong)

 124
Author: Xorlev,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-01-26 00:02:24

Aby rzucić podwójne do int i mieć to być zaokrąglone do najbliższej liczby całkowitej (tj. w przeciwieństwie do typowych (int)(1.8) i (int)(1.2), które będą zarówno "zaokrąglać w dół" w kierunku 0 i zwracać 1), po prostu dodaj 0.5 do double, które będziesz wpisywał do int.

Na przykład, jeśli mamy

double a = 1.2;
double b = 1.8;

Następnie następujące wyrażenia typu dla x i y zwrócą wartości zaokrąglone w dół (x = 1 i y = 1):

int x = (int)(a);   // This equals (int)(1.2) --> 1
int y = (int)(b);   // This equals (int)(1.8) --> 1

Ale dodając 0,5 do każdego, będziemy uzyskujemy wynik zaokrąglony do najbliższej liczby całkowitej, którego możemy pragnąć w niektórych przypadkach (x = 1 i y = 2):

int x = (int)(a + 0.5);   // This equals (int)(1.8) --> 1
int y = (int)(b + 0.5);   // This equals (int)(2.3) --> 2

jako mała uwaga , ta metoda pozwala również kontrolować próg , przy którym double jest zaokrąglany w górę lub w dół po (int) typecasting.

(int)(a + 0.8);

Do typecast. Wartość ta będzie zaokrąglana do (int)a + 1, gdy wartości dziesiętne są większe lub równe 0,2. Czyli poprzez dodanie 0.8 do double bezpośrednio przed typowaniem, 10.15 i 10.03 zostanie zaokrąglone w dół do 10 przy typowaniu (int), ale 10.23 i 10.7 zostaną zaokrąglone w górę do 11.

 27
Author: JavaDrip,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-07-02 18:20:56

(int) 99.99999

Będzie 99. Rzucanie dubla do int nie zaokrągla, odrzuci część ułamkową.

 17
Author: leeeroy,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-01-26 23:28:53
Math.floor(n)

Gdzie n jest podwójnym. Wydaje się, że to zwróci podwójną liczbę, więc upewnij się, że wpisujesz ją później.

 11
Author: Austin Fitzpatrick,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-01-26 23:25:09

To działa dobrze int i = (int) dbl;

 5
Author: fastcodejava,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-01-26 23:28:36

new Double(99.9999).intValue()

 5
Author: Nico.S,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-04-01 13:15:04

Spróbuj z tym, to jest proste

double x= 20.22889909008;
int a = (int) x;

this will return a=20

Lub spróbuj z tym:-

Double x = 20.22889909008;
Integer a = x.intValue();

this will return a=20

Lub spróbuj z tym:-

double x= 20.22889909008;
System.out.println("===="+(int)x);

this will return ===20
Może ten kod ci pomoże.
 1
Author: Amitsharma,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-11-18 12:27:34

Spróbuj użyć matematyki.piętro.

 0
Author: John,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-01-26 23:25:18