Java Округніть будь-яке число


146

Здається, я не можу знайти відповідь, яку шукаю, щодо простого запитання: як мені округлити будь-яке число до найближчого int?

Наприклад, щоразу, коли число становить 0,2, 0,7, 0,2222, 0,4324, 0,99999, я хотів би, щоб результат був 1.

Поки що маю

int b = (int) Math.ceil(a / 100);

Це, здається, не виконує роботу.


Чому у вашому зразковому коді ви ділите на 100?
Джон Скіт

14
Надіваюсь, ваш aтип має ціле число.
Микита Рибак

1
так, ур справа а - це цілий ... спасибі за вказівку на це. 100.0 сортував це для мене.
Стеванік

1
Я здогадуюсь, що він хоче, щоб це / 100 було закруглено, але так, питання може використати деяке уточнення.
Джей

1
ПРИМІТКА. На це питання надаються кращі відповіді.
martijnn2008

Відповіді:


289

Math.ceil()- це правильна функція для виклику. Я здогадуюсь, aце анфа int, яка змусила б a / 100виконати цілу арифметику. Спробуйте Math.ceil(a / 100.0)замість цього.

int a = 142;
System.out.println(a / 100);
System.out.println(Math.ceil(a / 100));
System.out.println(a / 100.0);
System.out.println(Math.ceil(a / 100.0));
System.out.println((int) Math.ceil(a / 100.0));

Виходи:

1
1.0
1.42
2.0
2

Дивіться http://ideone.com/yhT0l


3
це лише в тому випадку, якщо "а" подвійне
Л.Грілло

^^ "a" має бути подвійним або кидати подвійне.
Кодований

1
aє intв цьому прикладі, і він працює як запропоновано. При виконанні int / floatрезультату є показник float, як показано у висновку. Спробуйте посилання.
Дантістон

16

Я не знаю, чому ви ділите на 100, але ось моє припущення int a;

int b = (int) Math.ceil( ((double)a) / 100);

або

int b = (int) Math.ceil( a / 100.0);

11
int RoundedUp = (int) Math.ceil(RandomReal);

Це, здавалося, робило ідеальну роботу. Працював щоразу.


2

Через 10 років, але ця проблема все ще мене наздогнала.

Тож це відповідь тим, хто запізнився, як я.

Це не працює

int b = (int) Math.ceil(a / 100);

Викликати результат a / 100 виявляється цілим числом і він округлий, тому Math.ceil нічого не може з цим зробити.

Ви повинні уникати округлої операції з цим

int b = (int) Math.ceil((float) a / 100);

Зараз це працює.


0

Найпростіший спосіб зробити це просто: ви отримаєте поплавок або подвійний і хочете, щоб він перетворив його в найближчий раунд вгору, а потім просто зробіть System.out.println((int)Math.ceil(yourfloat)); це буде ідеально працювати


-3

Припустимо, що є подвійним, і нам потрібно округлене число без десяткових знаків. Використовуйте функцію Math.round ().
Це є моїм рішенням.

double a = 0.99999;
int rounded_a = (int)Math.round(a);
System.out.println("a:"+rounded_a );

Output : 
a:1

1
Це неправильна відповідь, оскільки тут пропонується округлити вгору, якщо a = 0,2, результат буде 0
Mohamed23gharbi
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.