Java BigDecimal удаляет десятичные и конечные числа

Я новичок в Java и пытаюсь взять BigDecimal (например, 99999999.99) и преобразовать его в строку, но без десятичной и конечной чисел. Кроме того, мне не нужны запятые в номере, и округление не требуется.

Я пробовал:

Math.Truncate(number)

но BigDecimal не поддерживается.

Любые идеи?

Большое спасибо.

Ответы

Ответ 1

Попробуйте number.toBigInteger().toString()

Ответ 2

Используйте это.

BigDecimal truncated= number.setScale(0,BigDecimal.ROUND_DOWN);

Ответ 3

BigDecimal без фракций - BigInteger. Почему бы вам просто не использовать BigInteger?

Ответ 4

Вот самый элегантный способ, который я нашел для этого:

public static String convertDecimalToString (BigDecimal num){
    String ret = null;
    try {
        ret = num.toBigIntegerExact().toString();
    } catch (ArithmeticException e){
        num = num.setScale(2,BigDecimal.ROUND_UP); 
        ret = num.toPlainString();
    }
    return ret;
}

Ответ 5

private void showDoubleNo(double n) {
    double num = n; 
    int decimalPlace = 2; 
    BigDecimal bd = new BigDecimal(num); 
    bd = bd.setScale(decimalPlace,BigDecimal.ROUND_UP); 
    System.out.println("Point is "+bd); 
}

Ответ 6

public static String convertBigDecimalToString(BigDecimal bg) {
      System.out.println("Big Decimal Value before its convertion :" + bg.setScale(2, BigDecimal.ROUND_HALF_UP));

      String bigDecStringValue = bg.setScale(0,BigDecimal.ROUND_HALF_UP).toPlainString();

      System.out.println("Big Decimal String Value after removing Decimal places is :" + bigDecStringValue);

      return bigDecStringValue;
}

Обратите внимание: я использовал "BigDecimal.ROUND_HALF_UP", чтобы убедиться, что режим округления округляется к "ближайшему соседу", если оба соседства не являются эквидистантными