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
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)
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.
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ą.
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.
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;
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()
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.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.
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