如何在Java中格式化数字?
什么是“最佳实践”?
在格式化一个数字之前,我需要对它进行舍入吗?
32.302342342342343
=>32.30
.7323
=> 0.73
等。
发布于 2008-09-08 20:04:04
在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()似乎是最动态的方式,而且在阅读其他代码时也很容易理解。
发布于 2008-09-08 20:04:18
你和String.format()
将成为新的最好的朋友!
https://docs.oracle.com/javase/1.5.0/docs/api/java/util/Formatter.html#syntax
String.format("%.2f", (double)value);
发布于 2008-09-08 22:50:23
请注意,从NumberFormat (和大多数其他格式的后代)派生的类是不同步的。创建格式对象并将其存储在util类的静态变量中是一种常见的(但危险的)实践。在实践中,它将几乎总是工作,直到它开始经历显著的负载。
https://stackoverflow.com/questions/50532
复制相似问题