我想从BigDecimal中删除所有尾随零并打印它。但是trailingZeros方法不能像(I)预期的那样工作。
BigDecimal a = new BigDecimal("-11111111111111111111111111111111111111.111111111111111111111111111111");
BigDecimal b = new BigDecimal("11111111111111111111111111111111111111.111111111111111111111111111111");
BigDecimal c = a.add(b);
System.out.println(c);
System.out.println(c.toPlainString());
c = c.stripTrailingZeros();
System.out.println(c);
System.out.println(c.toPlainString());
此代码的输出为:
0E-30
0.000000000000000000000000000000
0E-30
0.000000000000000000000000000000
我想要" 0"
的结果答案 0 :(得分:0)
如何根据您的要求使用DecimalFormat
创建格式化String
。
示例强>
BigDecimal bd = new BigDecimal(2324.0011);
DecimalFormat format = new DecimalFormat("#,##0.00");
String formatted = format.format(bd); // String now contains "2,324.00"
或
BigDecimal bd = new BigDecimal(2324.0011);
DecimalFormat format = new DecimalFormat("#,##0");
String formatted = format.format(bd); // String now contains "2,324"
或使用您提供的值:
BigDecimal a = new BigDecimal("-11111111111111111111111111111111111111.111111111111111111111111111111");
BigDecimal b = new BigDecimal("11111111111111111111111111111111111111.111111111111111111111111111111");
BigDecimal c = a.add(b);
DecimalFormat format = new DecimalFormat("#,##0");
System.out.println(format.format(c)); // prints "0"
您可以使用此正则表达式(?<=\d)\.?0+(?![\d\.])
去除任何剩余的尾随零,例如:
String value = "10000.343999000";
String stripped = value.replaceAll("(?<=\\d)\\.?0+(?![\\d\\.])", ""); // now is 10000.343999