21

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

我试过了:

Math.Truncate(number)

但不支持 BigDecimal。

有任何想法吗?

非常感谢。

4

6 回答 6

61

用这个。

BigDecimal truncated= number.setScale(0,BigDecimal.ROUND_DOWN);
于 2009-08-22T21:34:37.337 回答
47

尝试number.toBigInteger().toString()

于 2009-08-22T20:22:16.720 回答
7

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

于 2009-08-22T21:46:23.990 回答
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;
}
于 2015-09-06T21:07:23.900 回答
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); 
}
于 2012-10-30T10:06:32.700 回答
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' ,只是为了确保舍入模式向“最近的邻居”舍入,除非两个邻居是等距的

于 2016-11-24T08:36:48.417 回答