Java BigDecimal删除十进制数和尾随数

Java BigDecimal删除十进制数和尾随数,java,decimal,bigdecimal,Java,Decimal,Bigdecimal,我是Java新手,尝试使用BigDecimal(例如99999999.99)并将其转换为字符串,但不带小数点和尾随数字。此外,我不希望在数字中使用逗号,不需要四舍五入 我试过: Math.Truncate(number) 但不支持BigDecimal 有什么想法吗 非常感谢。试试number.tobiginger().toString()用这个 BigDecimal truncated= number.setScale(0,BigDecimal.ROUND_DOWN); 不带分数的BigDe

我是Java新手,尝试使用BigDecimal(例如99999999.99)并将其转换为字符串,但不带小数点和尾随数字。此外,我不希望在数字中使用逗号,不需要四舍五入

我试过:

Math.Truncate(number)
但不支持BigDecimal

有什么想法吗


非常感谢。

试试
number.tobiginger().toString()
用这个

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

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

以下是我发现的解决此问题的最优雅的方法:

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

请注意:我使用了“BigDecimal.ROUND_HALF_UP”,只是为了确保舍入模式向“最近邻居”舍入,除非两个邻居是等距的

u更改了数据类型这是最合适的答案,因为它不会更改数据类型
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;
}