2014-09-11 5 views
-2

Мне нужно взять long и округлить его значение до ближайшего 10-го места. Следовательно:«Округление» целых чисел в Java

If the # is:   Then it should become: 
============================================== 
243      240 
288485     288480 
6      0 
107      100 
1009     1000 
1019     1010 

Я знаю, что RoundingMode может вероятно помочь мне здесь, но все примеры, я был в состоянии найти использование десятичных знаков, а не целые числа. Есть идеи?

+0

'значение/10 * 10' – RoToRa

ответ

4

Использование по модулю

Пример:

int i= 243; 
System.out.println(i-(i%10)); 

Другой способ: (взято из дублированного вопроса)

int i = 243; 
MathUtils.round((double) i, -1); // nearest ten, 240.0 
MathUtils.round((double) i, -2); // nearest hundred, 200.0 
MathUtils.round((double) i, -3); // nearest thousand, 2000.0 
2

Вы можете сделать это с помощью умножения и деления операции. Integer divsion округляет вниз, как вы хотите:

long roundDownToTen(long input){ 
    long intermediate = input/10; 
    return input*10; 
} 

Например, если вход 1024, разделение приводит к промежуточным быть 102 (так как фактическое значение 102,4, которое обрезается хранить в длину), и умножение дает 1020.

Вы также можете использовать подход, в котором вы вычитаете значение цифры единиц (по модулю), что предлагается в ответе Аэшанга.

0

Разделить на 10 (243/10 = 24,3) Поместите это в междунар умножить на 10. (24 * 10 = 240) ли это для всех значений, и вы должны иметь правильное значение