我将圆形加倍到2位小数时遇到问题。我知道很多地方都提出过这个问题。但我的问题略有不同,我在其他地方找不到。
据我所知,有两种方法可以做到这一点。
Math.round(double*100.0)/100.0
DecimalFormat(“###.##”)
我正在尝试使用第一种方式:自定义圆形双倍的方式。 当第二个小数为0时,结果将只打印第一个小数,而忽略第二个小数。
例如,
Math.round(1.23333*100.0)/100.0
结果是1.23。这很好用。Math.round(3.90*100.0)/100.0.
结果是3.9。出现问题。我想显示3.90而不是3.9 Math.round(3*100.0)/100.0
。结果是4.0。我想要4.00而不是4.0 所以,我的问题是,无论最后一个小数是否为0,我如何得到一个带有2位小数的双精度值。 我知道我可以使用第二种方式 - DecimalFormat(“###.##”)
来实现我想要的!但是可以通过第一种方式来实现吗?
编辑:谢谢你的回答。看起来不可能使用round()方法来实现它。但是,有些人建议使用2种方法的组合来实现它。但我认为仅使用DecimalFormat(“###.##”)
可以获得我想要的东西。任何人都可以证实吗?
答案 0 :(得分:1)
我建议使用String.format(“%1 $ .2f”,x)。它将值舍入到指定的精度(在我们的示例中为2位),并在右侧留下尾随零。
System.out.println(String.format("%1$.2f",3.121)) gives 3.12
System.out.println(String.format("%1$.2f",3.129)) gives 3.13
System.out.println(String.format("%1$.2f",3.12)) gives 3.12
System.out.println(String.format("%1$.2f",3.10)) gives 3.10
答案 1 :(得分:0)
您是否尝试过以下操作?
DecimalFormat(“###.00”)
如果没有弄错,使用#-sign时尾随零留空。
答案 2 :(得分:0)
我相信您需要结合使用两者来满足您的需求。
舍入得到一个带有两位小数的数字,DecimalFormat
用两位小数显示它。
答案 3 :(得分:0)
您应该使用DecimalFormat
DecimalFormat format = new DecimalFormat("0.00");
System.out.println(Math.round(3.90*100.0)/100.0); // 3.9
System.out.println(format.format(Math.round(3.90*100.0)/100.0)); // after using format 3.90
System.out.println(format.format(Math.round(3*100.0)/100.0));
输出
3.9
3.90
3.00