我想找到DecimalFormat
的格式字符串(模式),就像将双数转换为字符串一样,例如使用Double.toString(double)
。
示例:
1 → "1.0"
123456.789 → "123456.789"
1e50 → "1.0e50"
这种格式是否存在?
答案 0 :(得分:1)
从目前为止我能够确定的,没有单一的DecimalFormat
模式可以模仿Double.toString
(这对我来说似乎很奇怪),但是可以用两个模式完成模式和幅度范围,如Double.toString(double)
javadoc中所述。
这是一种似乎可以完成这项工作的方法:
public static String fmt(final double d) {
final double a = Math.abs(d);
final boolean normal = a == 0 || a >= 1e-3 && a < 1e7;
final DecimalFormat f = new DecimalFormat(normal ?
"0.0##################" :
"0.0#################E0");
return f.format(d);
}
NaN和无穷大有不同的结果,但这些可以作为特殊情况处理。