Java: пытаясь получить процент целых чисел, как округлить? - PullRequest
3 голосов
/ 28 марта 2012

У меня есть два целочисленных значения, x и total. Я пытаюсь найти процент х в целом как целое число. Вот как я это делаю прямо сейчас:

процент = (int) ((x * 100) / всего);

Процент должен быть целым числом. Когда я делаю это, он всегда округляет десятичную точку вниз. Есть ли простой способ рассчитать процент в виде целого числа, чтобы он округлялся вверх, если десятичное число составляет 0,5 или выше?

Ответы [ 7 ]

14 голосов
/ 28 марта 2012

Используйте Math.round(x * 100.0/total). Но обратите внимание, что это возвращает long, поэтому потребуется простое приведение к int.

Я положил 100.0, чтобы заставить его использовать арифметику с плавающей запятой перед округлением.

3 голосов
/ 28 марта 2012
(int)Math.round(100.0 / total * x);

должно работать.

2 голосов
/ 28 марта 2012

Просто используйте Math.round(100.0 / total * x);

1 голос
/ 28 марта 2012

Вы можете добавить 0,5 для положительных значений (от округления до бесконечности)

percentage = (int)(x * 100.0 / total + 0.5);

Это быстрее, чем использование Math.round, но, возможно, не так ясно.

Кстати: 100.0 / total * x может не давать тот же результат, что и x * 100.0 / total, так как порядок вычисления может изменить результат для плавающей запятой.

1 голос
/ 28 марта 2012

Используйте стандартную математическую библиотеку в Java.

percentage = Math.round(*your expression here*);
1 голос
/ 28 марта 2012

Почему бы не использовать Math.round((x*100)/total);

0 голосов
/ 07 июня 2013

Самый простой метод -

Вопрос: Как округлить значение десятичного числа (например, int n = 4,57)

Ответ: Math.round (n);

Вывод: 5.

...