我是Java新手,正在尝试将BigDecimal(例如99999999.99)转换为字符串,但不包括小数点和尾随数字。另外,我不希望数字中有逗号,并且不需要进行舍入。
我尝试过:
Math.Truncate(number)
但是不支持BigDecimal。
有什么想法吗?
非常感谢。
我是Java新手,正在尝试将BigDecimal(例如99999999.99)转换为字符串,但不包括小数点和尾随数字。另外,我不希望数字中有逗号,并且不需要进行舍入。
我尝试过:
Math.Truncate(number)
但是不支持BigDecimal。
有什么想法吗?
非常感谢。
BigDecimal truncated= number.setScale(0,BigDecimal.ROUND_DOWN);
尝试使用number.toBigInteger().toString()
没有小数的BigDecimal就是BigInteger。为什么不直接使用BigInteger呢?
以下是我发现的最优雅的解决方法:
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;
}
num = num.setScale(2,BigDecimal.ROUND_UP);
You mean : num = num.setScale(0,BigDecimal.ROUND_UP);
- sbernardprivate 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 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;
}
number.toPlainString();