Java BigDecimal 删除小数和尾随数字

问题描述 投票:0回答:7

我是 Java 新手,尝试获取 BigDecimal(例如 99999999.99)并将其转换为字符串,但没有小数位和尾随数字。另外,我不想在数字中使用逗号,并且不需要四舍五入。

我已经尝试过:

Math.Truncate(number)

但不支持 BigDecimal。

有什么想法吗?

非常感谢。

java decimal bigdecimal
7个回答
67
投票

用这个。

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

在新的 Java 版本中,请使用

RoundingMode
代替:

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

49
投票

尝试

number.toBigInteger().toString()


9
投票

没有分数的 BigDecimal 是 BigInteger。为什么不直接使用 BigInteger?


5
投票

这是我发现解决这个问题的最优雅的方法:

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;
}

0
投票
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); 
}

0
投票
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' ,只是为了确保舍入模式向“最近邻居”舍入,除非两个邻居等距


0
投票

这对我有用:

number.toPlainString();
© www.soinside.com 2019 - 2024. All rights reserved.