Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/video/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在java中,将双精度转换为小数点后两位_Java_Double_Decimalformat - Fatal编程技术网

在java中,将双精度转换为小数点后两位

在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

我想把一个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.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具有精确性