2016-09-15 85 views
-2

我正在使用以下代码格式化双精度值。 例如,如果输入是,则输出双倍值应该是34.00以2位小数进行双倍转换的字符串

Double value = new Double(34); 
DecimalFormat decimalFormat =new DecimalFormat(); 
decimalFormat.applyPattern("#.00"); 
System.out.println("String format " + decimalFormat.format(value)); 
double formattedValue =Double.valueOf(decimalFormat.format(value)); 
System.out.println("double format " + formattedValue); 

这里输出:

字符串格式34.00
双格式的34.0

我不想使用BigDecimal

这里我们最后的要求是将格式化的值存储在双类型字段中。

+3

“双”值没有“格式”。 –

+0

您正在存储您的数值。 'double'不能保留重要的数字,所以无论你的字符串有多少数字,当你打印出来时你仍然会得到34.0。打印时,您将不得不重新格式化双面打印。 –

+0

请勿将其分配给* formattedValue *。打印* decimalFormat.format(value)*本身(如@Reimeus所示) – blackpen

回答

1

A double可以格式化为您在第一个示例中看到的任何种类的String,但double在内部没有格式(至少有一个可以修改)。这就是为什么无论你做什么都不能使你的第二行打印34.00,而不将它转换为String

0

嗯,我的意思是,总是有好老的printf ...

System.out.printf("value is %.0f\n", value); 

或同样地:

String formatted = String.format("%.0f", value); 

重申的其他意见:双为双。它没有固有的显示格式。格式化它是如何显示它的函数。

+0

简短而快捷! – blackpen