格式化双值?

时间:2014-06-30 14:58:02

标签: java

我有以下代码行:

DecimalFormat df = new DecimalFormat("#.##"); 
System.out.println(df.format(23.00));
System.out.println(Double.parseDouble(df.format(23.00d)));
System.out.println(df.parse("23.00").doubleValue());

第一行打印23但在第二行和第三行中,当我将其转换为double时,它会打印23.0。显示23.0没有任何意义。

如何获得double23

我查看了这些best-way-to-format-a-double-value-to-2-decimal-places how-to-nicely-format-floating-numbers-to-string-without-unnecessary-decimal-0

3 个答案:

答案 0 :(得分:3)

在第二和第三个输出行中,您只是有效地使用Double.toStringdouble值不记得它在开始时被解析的格式 - 它只是一个数值。

如果要以特定方式格式化值,请在第一个输出行中使用df.format。例如:

String text = ...; // Wherever you get the text from
double value = Double.parseDouble(text);
String formatted = df.format(value); // Using the df you set up before

答案 1 :(得分:0)

double值转换为String时,永远不会是integer。它将始终包含decimals

如果您希望在控制台上打印一倍23,则可以将其投放到Int

System.out.println((int) yourDouble);

答案 2 :(得分:0)

当您说double时,如果您的号码为23,则会显示23.0,因为它是double

如果您的意思是打印带有2位数的int值,则可以使用System.out.printf("%.2d", number);

这次我的系统上没有任何Java编译器用于测试,但我认为这是真的。