Я хочу округлить число 1732 до ближайших десяти, сто и тысяч. Я пытался использовать функции Math round, но был написан только для float и double. Как это сделать для Integer? Есть ли какая-либо функция в java?
Как округлить целое число в java
Ответ 1
Используйте Точность (Apache Commons Math 3.1.1)
Precision.round(double, scale); // return double
Precision.round(float, scale); // return float
Используйте MathUtils (Apache Commons Math) - Старые версии
MathUtils.round(double, scale); // return double
MathUtils.round(float, scale); // return float
шкала. Число цифр справа от десятичной точки. (+/-)
Отброшено, потому что метод round (float, масштаб).
Math.round(MathUtils.round(1732, -1));//ближайшая десятка, 1730 Math.round(MathUtils.round(1732, -2));//ближайшая сотня, 1700 Math.round(MathUtils.round(1732, -3));//ближайшая тысяча, 2000
Лучшее решение
int i = 1732;
MathUtils.round((double) i, -1); // nearest ten, 1730.0
MathUtils.round((double) i, -2); // nearest hundred, 1700.0
MathUtils.round((double) i, -3); // nearest thousand, 2000.0
Ответ 2
Какой механизм округления вы хотите использовать? Здесь примитивный подход для положительных чисел:
int roundedNumber = (number + 500) / 1000 * 1000;
Это приведет к чему-то вроде от 1499 до 1000 и от 1500 до 2000.
Если у вас могут быть отрицательные числа:
int offset = (number >= 0) ? 500 : -500;
int roundedNumber = (number + offset) / 1000 * 1000;
Ответ 3
(int)(Math.round( 1732 / 10.0) * 10)
Math.round(double)
принимает double
, а затем округляется как ближайшее целое число. Таким образом, 1732
станет 173.2
(входной параметр) при обработке Math.round(1732 / 10.0)
. Таким образом, метод округляет его, как 173.0
. Затем, умножая его на 10 (Math.round( 1732 / 10.0) * 10)
, выдается закругленный ответ, который 173.0
затем будет передан в int
.
Ответ 4
Вы можете попробовать:
int y = 1732;
int x = y - y % 10;
Результат будет 1730.
Изменить. Это не отвечает на вопрос. Он просто удаляет часть номера, но не "округляется до ближайшего".
Ответ 5
В ближайшие десять:
int i = 1986;
int result;
result = i%10 > 5 ? ((i/10)*10)+10 : (i/10)*10;
(добавьте ноль по желанию сотню тысяч).
Ответ 6
почему бы просто не проверить цифру устройства... 1. если оно меньше или равно 5, добавьте 0 в единицу позиции и оставьте номер как есть. 2. если оно больше 5, увеличьте десятки цифр, добавьте 0 в единицу позиции.
ex: 1736 (так как 6 >= 5) округленное число будет 1740. теперь для 1432 (с 2 и 5) округленное число будет 1430....
Я надеюсь, что это сработает... если не так, чем сообщите мне об этих случаях...
Счастливое программирование,
Ответ 7
очень просто. попробуйте это
int y = 173256457;int x = (y/10)*10;
Теперь вы можете заменить 10 на 100,1000 и т.д....
Ответ 8
Это очень просто..
int x = 1234; int y = x - x% 10;//Это даст 1230
int y = x - x% 100;//Это даст 1200
int y = x - x% 1000;//Это даст 1000
Вышеупомянутая логика просто преобразует последние цифры в 0. Если вы хотите, чтобы фактический раунд // Напр. 1278 это должно округлить до 1280, потому что последняя цифра 8 > 5 для этого я написал функцию проверки.
private double returnAfterRoundDigitNum(double paramNumber, int noOfDigit)
{
double tempSubtractNum = paramNumber%(10*noOfDigit);
double tempResultNum = (paramNumber - tempSubtractNum);
if(tempSubtractNum >= (5*noOfDigit))
{
tempResultNum = tempResultNum + (10*noOfDigit);
}
return tempResultNum;
}
Здесь проходят 2 параметра: одно - это число, а другое - позиция, до которой вы должны округлить.
С уважением, Abhinav
Ответ 9
Вы посмотрели на реализацию Mathutils.round()? Все это основано на преобразованиях BigDecimal и string. Трудно представить себе несколько подходов, которые менее эффективны.
Ответ 10
Без использования математических приложений округление может быть достигнуто для любого устройства, как показано ниже:
double roundValue (double input, double toNearest){
//toNearest is any rounding base like 10, 100 or 1000.
double modValue = input % toNearest;
System.out.println(modValue);
if(modValue == 0d){
roundedValue = input;
}
else
{
roundedValue = ((input - modValue) + toNearest);
}
System.out.println(roundedValue);
return roundedValue;
}
Ответ 11
Я сделал этот простой метод, и он отлично работает для меня. Он округляется до ближайших десяти, но с небольшой корректировкой вы можете округлить 100, 1000 и т.д.
public int round10(int num){
if (num%10 < 5){
while (num%10!=0){
num--;
}
}
else {
while (num%10!=0){
num++;
}
}
return num;
}
Ответ 12
Обычно я делаю так:
int num = 1732;
int roundedNum = Math.round((num + 9)/10 * 10);
В результате вы получите 1740.
Надеюсь, это поможет.