我是Java的新手并尝试使用BigDecimal(例如99999999.99)并将其转换为字符串但没有小数位和尾随数字。另外,我不想要数字中的逗号,也不需要舍入。
我试过了:
Math.Truncate(number)
但不支持BigDecimal。
有什么想法吗?
非常感谢。
答案 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' ,只是为了确保,舍入模式转向"最近邻居"除非两个邻居都是等距的