Użyłem następującego wiersza, aby przekonwertować zmiennoprzecinkowe na int, ale nie jest tak dokładne, jak bym chciał:
float a=8.61f;
int b;
b=(int)a;
Wynik jest następujący: 8
(Powinno być 9
)
Kiedy a = -7.65f
wynikiem jest: -7
(Powinno być -8
)
Jak najlepiej to zrobić?
java
floating-point
int
Szczery
źródło
źródło
Odpowiedzi:
Użycie
Math.round()
spowoduje zaokrąglenie liczby zmiennoprzecinkowej do najbliższej liczby całkowitej.źródło
Math.round()
zwracaint
wartość, więc użycie typecastingu(int)
jest zbędne.(int)foo
jest prostsze.W rzeczywistości istnieją różne sposoby obniżenia liczby zmiennoprzecinkowej do liczby int, w zależności od wyniku, który chcesz osiągnąć: (dla int
i
, floatf
)round (najbliższa liczba całkowita do podanej liczby zmiennoprzecinkowej)
Uwaga: w umowie jest to równe
(int) Math.floor(f + 0.5f)
obcinaj (tzn. upuść wszystko po kropce dziesiętnej)
sufit / podłoga (liczba całkowita zawsze większa / mniejsza niż podana wartość, jeśli ma jakąkolwiek część ułamkową)
Aby zaokrąglić wartości dodatnie , możesz również użyć
(int)(f + 0.5)
, który działa dokładnie tak, jakMath.Round
w tych przypadkach (zgodnie z dokumentem).Możesz także użyć
Math.rint(f)
do zaokrąglenia do najbliższej parzystej liczby całkowitej ; jest to prawdopodobnie przydatne, jeśli spodziewasz się poradzić sobie z wieloma zmiennoprzecinkowymi z częścią ułamkową ściśle równą 0,5. (zwróć uwagę na możliwe problemy z zaokrąglaniem IEEE) i chcesz utrzymać średnią zbioru; wprowadzisz inne nastawienie, w którym liczby parzyste będą bardziej powszechne niż nieparzyste.Widzieć
http://mindprod.com/jgloss/round.html
http://docs.oracle.com/javase/6/docs/api/java/lang/Math.html
po więcej informacji i kilka przykładów.
źródło
Math.round(value)
zaokrąglić wartość do najbliższej liczby całkowitej.Posługiwać się
źródło
Math.round zwraca również wartość całkowitą, więc nie musisz zapisywać tekstu.
źródło
Użyj
Math.round(value)
następnie po typ rzuć go na liczbę całkowitą.źródło
Jeśli chodzi o mnie, łatwiej: (int) (a +.5) // a to Float. Zwraca zaokrągloną wartość.
Nie zależy od typów Java Math.round ()
źródło
-(int) ( PI / 3 )
: wypróbuj kod z ujemnyma
... od kiedy-0.5
zaokrągla się do0
?