获取double的普通字符串表示形式,而不通过BigDecimal

时间:2013-01-11 22:36:14

标签: java string double

在Java中使用双精度数字,是否可以获得纯字符串表示(例如,654987)而不是科学格式(例如,6.54987E5)?

现在我知道我们可以使用BigDecimal.toPlainString()方法,但创建一个BigDecimal只是为了获得一个String(真的吗?)对我来说似乎有点草率和低效。 有谁知道另一种方式?

3 个答案:

答案 0 :(得分:4)

double d = 12345678;

System.out.println(d);
System.out.println(String.format("%.0f", d));
1.2345678E7
12345678

请注意,如果您只需要打印此字符串表示,则只需使用System.out.printf("%.0f", d)

如果您不想要任何,那么我会坚持您的建议,即(new BigDecimal(d)).toPlainString()

答案 1 :(得分:3)

使用DecimalFormat / NumberFormat

示例中的基本用法:

NumberFormat nf = NumberFormat.getInstance();
output.println(nf.format(myNumber));

对于DecimalFormat,您可以传递格式化模式/区域设置信息以格式化数字。 This link是使用DecimalFormat的好教程。

答案 2 :(得分:0)

你可以这样做:

double number = 654987;

String plain = String.format("%.0f", number);