在java中,将双精度转换为小数点后两位
我想把一个dobule转换成两个地方。我对同一个问题有答案,但没有一个能满足我的问题 这是我正在使用的代码:在java中,将双精度转换为小数点后两位,java,double,decimalformat,Java,Double,Decimalformat,我想把一个dobule转换成两个地方。我对同一个问题有答案,但没有一个能满足我的问题 这是我正在使用的代码: Double d=15.99965754; System.out.println("Value before formatting is : "+d); String value=new DecimalFormat("##.00").format(d); System.out.println("The value after formatting is :" +Double.parseD
Double d=15.99965754;
System.out.println("Value before formatting is : "+d);
String value=new DecimalFormat("##.00").format(d);
System.out.println("The value after formatting is :" +Double.parseDouble(value));
我得到的结果是
格式化前的值为:15.99965754
格式化后的值为:16.0
但我真正期待的是:
格式化前的值为:15.99965754
格式化后的值为:16.00
无论双精度值是什么,我都应该将小数点精确到两位。不要解析值,只需打印即可
System.out.println("The value after formatting is :" + value);
获得相同结果的另一种方法
System.out.printf("The value after formatting is : %.2f", d);
如果您关心双精度
Double
的显示格式,那么为什么在结尾使用Double.parseDouble
parseDouble
返回一个double
,而不是字符串。我需要的最终值是double,这就是我转换它的原因。double
是一种数字类型。这意味着(double)16
,(double)16.0
和(double)16.00
都是完全相同的。如果你想看到特定数量的零,那么你需要的是一个字符串
。这只是一个测试代码。在我的主程序中,我将这个值(双值)添加到一个VO中。我只能向它添加一个dobule值,但我同样想要正好两个十进制位置。你用它做什么都不重要。只有一个值为16的double
。谈论“想要16.00而不是16.0”是没有意义的-它们都是相同的double
。但要求是最终值应该是double。要求似乎是错误的,double不能有精度,我们只能在小数点后用不同的位数格式化它。BigDecimal具有精确性