【发布时间】:2014-06-30 14:58:01
【问题描述】:
我有以下代码行:
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 但在第二行和第三行,当我将其转换为双倍时,它会打印 23.0 。显示23.0 没有任何意义。
我如何获得double 值23。
我检查了这些best-way-to-format-a-double-value-to-2-decimal-placeshow-to-nicely-format-floating-numbers-to-string-without-unnecessary-decimal-0
【问题讨论】:
-
23和23.0是一回事。如果您想在没有.0的情况下打印它,请使用第一行中的格式字符串。 -
23不是double。23是一个整数。23.00是double。如果第一行打印您想要的格式,为什么将输出解析为双精度并显示双精度?目前尚不清楚您要解决什么问题,因为答案就在您的问题之内。 -
在第二行和第三行中,您将其转换回双精度(之前是字符串),因此 Java 将像往常一样打印它们。
-
你已经拥有了这个价值。在最后两行中,您没有按照自己的意愿格式化值,您只是使用
System.out.println(double x),它默认输出Double.toString(double d)实现所描述的值 -
你到底想要什么?将其打印为
23,就像您在第一行中所做的那样,或者将其打印为23.00?
标签: java