问题

如何在Java中格式化数字?
什么是"最佳实践"?

在格式化之前,我需要对数字进行舍入吗?

32.302342342342343 => 32.30 .7323 => 0.73

等等


#1 热门回答(110 赞)

this thread开始,有不同的方法:

double r = 5.1234;
System.out.println(r); // r is 5.1234

int decimalPlaces = 2;
BigDecimal bd = new BigDecimal(r);

// setScale is immutable
bd = bd.setScale(decimalPlaces, BigDecimal.ROUND_HALF_UP);
r = bd.doubleValue();

System.out.println(r); // r is 5.12
f = (float) (Math.round(n*100.0f)/100.0f);
DecimalFormat df2 = new DecimalFormat( "#,###,###,##0.00" );
double dd = 100.2397;
double dd2dec = new Double(df2.format(dd)).doubleValue();

// The value of dd2dec will be 100.24

DecimalFormat()似乎是最有活力的方式,在阅读其他代码时也很容易理解。


#2 热门回答(69 赞)

你和String.format()将成为新的好朋友!
http://java.sun.com/j2se/1.5.0/docs/api/java/util/Formatter.html#syntax

String.format("%.2f", (double)value);

#3 热门回答(12 赞)

请注意,从NumberFormat(以及大多数其他Format后代)下降的类不会同步。创建格式对象并将它们存储在util类中的静态变量中是一种常见(但危险)的做法。在实践中,它几乎总是有效,直到它开始经历重大负载。


原文链接