在Java中使用双精度数字,是否可以获得纯字符串表示(例如,654987
)而不是科学格式(例如,6.54987E5
)?
现在我知道我们可以使用BigDecimal.toPlainString()
方法,但创建一个BigDecimal
只是为了获得一个String
(真的吗?)对我来说似乎有点草率和低效。
有谁知道另一种方式?
答案 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);