Округлить до нуля в 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)

Возвращает наибольшее (ближайшая к положительной бесконечности) двойное значение, которое не больше аргумента и равна математическому целое число. Особые случаи:

Ответ 8

Вы также можете попробовать следующее:

public static void main(String[] args) {
        Double myDouble = -3.2;
        System.out.println(myDouble.intValue()); //Prints -3

    }