我有以下代码行:
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
没有任何意义。
如何获得double
值23
。
我查看了这些best-way-to-format-a-double-value-to-2-decimal-places how-to-nicely-format-floating-numbers-to-string-without-unnecessary-decimal-0
答案 0 :(得分:3)
在第二和第三个输出行中,您只是有效地使用Double.toString
。 double
值不记得它在开始时被解析的格式 - 它只是一个数值。
如果要以特定方式格式化值,请在第一个输出行中使用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编译器用于测试,但我认为这是真的。