Jav*_*uth 1 java bigdecimal decimalformat
我需要格式化一个2位小数的数字.原始数字可以是整数或具有三个小数位的数字.但是,无论原始数字是整数还是具有小数位,结果都应格式化为逗号和两位小数.
我正在使用以下代码格式化代码,但它无法在上述2和3的情况下添加两个小数位.
String originalNumber = "56565656.7";
BigDecimal b = new BigDecimal(originalNumber).setScale(2, BigDecimal.ROUND_HALF_UP);
String formattedNumber = NumberFormat.getInstance().format(b);
Run Code Online (Sandbox Code Playgroud)
如果有任何方法可以以有效的方式完成此任务,请告诉我.
提前致谢.
看看DecimalFormat类.
或者,您可以从BigDecimal类中设置SetScale方法.
BigDecimal bg1 = new BigDecimal("56565656.342");
BigDecimal bg2 = new BigDecimal("56565656.00");
BigDecimal bg3 = new BigDecimal("56565656.70");
DecimalFormat df = new DecimalFormat("###,###.00");
System.out.println(df.format(bg1.doubleValue()));
System.out.println(df.format(bg2.doubleValue()));
System.out.println(df.format(bg3.doubleValue()));
System.out.println(bg1.setScale(2, BigDecimal.ROUND_HALF_UP));
System.out.println(bg2.setScale(2, BigDecimal.ROUND_HALF_UP));
System.out.println(bg3.setScale(2, BigDecimal.ROUND_HALF_UP));
Run Code Online (Sandbox Code Playgroud)
产量:
56,565,656.34
56,565,656.00
56,565,656.70
56565656.34
56565656.00
56565656.70
Run Code Online (Sandbox Code Playgroud)
编辑:也忘了提:如果你是精确的,我会建议你使用该setScale方法,使用该.doubleValue()方法将产生一个double可能导致精度损失.
| 归档时间: |
|
| 查看次数: |
10011 次 |
| 最近记录: |