Округлить до нуля в java
Как округлить в java к нулю?
Итак, -1.9 становится -1.0, а -0.2 становится 0.0, 3.4 становится 3.0 и т.д.
Может ли Math.round()
сделать это, изменяя некоторые параметры?
Ответы
Ответ 1
Я не считаю, что стандартная библиотека имеет такую функцию.
Проблема заключается в том, что вы просите о совершенно другом поведении (математически говоря) в зависимости от того, является ли число больше или меньше 0 (т.е. округление для отрицательных значений, округление для положительных значений)
Можно использовать следующий метод:
public double myRound(double val) {
if (val < 0) {
return Math.ceil(val);
}
return Math.floor(val);
}
Ответ 2
сделать так:
float x= 1.9;
long y = (long)x;
Это округляет как положительное, так и отрицательное числа к нулю.
Ответ 3
Используйте RoundingMode.DOWN
, он ведет к нулю.
Пример:
BigDecimal value = new BigDecimal("1.4");
value = value.setScale(0, RoundingMode.DOWN);
System.out.println(value.doubleValue());
BigDecimal value1 = new BigDecimal("-1.4");
value1 = value1.setScale(0, RoundingMode.DOWN);
System.out.println(value1.doubleValue());
Ответ 4
Простое литье в int сделает это за вас?
Изменить: если вы хотите сохранить двойной, это должно работать достаточно просто:
if (val < 0)
return -Math.floor(-val);
else
return Math.floor(val);
И только для людей, которые хотят получить бесплатный код и чувствуют себя немного умнее:
long tmp = Double.doubleToLongBits(val);
tmp >>>= 63;
return Math.floor(val) + tmp;
Ответ 5
y=sign(x)*floor(abs(x))
или
y=sign(x)*round(abs(x)-0.5)
Его следует легко реализовать на Java.
Ответ 6
Похоже, вы хотите всегда округлять? Вместо этого вы можете использовать Math.floor
public static double floor(double a)
Возвращает наибольшее (ближайшая к положительной бесконечности) двойное значение, которое не больше аргумента и равна математическому целое число. Особые случаи:
Ответ 7
BigDecimal
предлагает множество вариантов округления.
Ответ 8
Вы также можете попробовать следующее:
public static void main(String[] args) {
Double myDouble = -3.2;
System.out.println(myDouble.intValue()); //Prints -3
}