Java BigDecimal删除小数和尾随数字

时间:2009-08-22 20:19:41

标签: java decimal bigdecimal

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

我试过了:

Math.Truncate(number)

但不支持BigDecimal。

有什么想法吗?

非常感谢。

6 个答案:

答案 0 :(得分:40)

尝试number.toBigInteger().toString()

答案 1 :(得分:40)

使用此功能。

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

答案 2 :(得分:5)

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

答案 3 :(得分:3)

这是我发现解决此问题的最优雅方式:

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

答案 4 :(得分: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); 
}

答案 5 :(得分: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' ,只是为了确保,舍入模式转向"最近邻居"除非两个邻居都是等距的