Nie mogę znaleźć odpowiedzi, której szukam, w związku z prostym pytaniem: jak zaokrąglić dowolną liczbę do najbliższej int
?
Na przykład, ilekroć liczba wynosi 0,2, 0,7, 0,2222, 0,4324, 0,99999, chciałbym, aby wynikiem było 1.
Jak dotąd mam
int b = (int) Math.ceil(a / 100);
Jednak wydaje się, że to nie działa.
a
że masz typ liczby całkowitej.Odpowiedzi:
Math.ceil()
jest właściwą funkcją do wywołania. Zgaduję, żea
jest toint
, co spowodowałobya / 100
wykonanie arytmetyki całkowitej. SpróbujMath.ceil(a / 100.0)
zamiast tego.Wyjścia:
Zobacz http://ideone.com/yhT0l
źródło
a
jestint
w tym przykładzie i działa zgodnie z sugestią. Podczas wykonywaniaint / float
wynikiem jest afloat
, jak pokazano na wyjściu. Wypróbuj link.Nie wiem, dlaczego dzielisz przez 100, ale tutaj moje założenie
int a;
lub
źródło
Wydawało się, że to działa idealnie. Pracował za każdym razem.
źródło
10 lat później, ale ten problem wciąż mnie złapał.
Więc to jest odpowiedź dla tych, którzy są za późno jak ja.
To nie działa
Ponieważ wynik
a / 100
okazuje się być liczbą całkowitą i jest zaokrąglony, więc Math.ceil nie może nic z tym zrobić.Musisz przy tym unikać zaokrąglania operacji
Teraz działa.
źródło
Najłatwiej to zrobić: otrzymasz zmiennoprzecinkowy lub podwójny i chcesz, aby przekształcił go w najbliższe zaokrąglenie, a następnie po prostu zrób
System.out.println((int)Math.ceil(yourfloat));
to, będzie działać idealnieźródło
Zakładając, że podwójna i potrzebujemy zaokrąglonej liczby bez miejsca po przecinku. Użyj funkcji Math.round ().
To jest moje rozwiązanie.
źródło