【发布时间】:2011-10-09 11:57:12
【问题描述】:
我有一个问题,如何编写代码,根据标准使用不同的十进制数字格式将双数转换为字符串。
例如
1)如果整数位数
2)如果整数位数>=N:使用科学数字格式0.###E0
我只是想出手动计算整数位数(除以 10)的想法。然后使用 if/else。
还有其他方法吗?
【问题讨论】:
我有一个问题,如何编写代码,根据标准使用不同的十进制数字格式将双数转换为字符串。
例如
1)如果整数位数
2)如果整数位数>=N:使用科学数字格式0.###E0
我只是想出手动计算整数位数(除以 10)的想法。然后使用 if/else。
还有其他方法吗?
【问题讨论】:
您可以使用 NumberFormat 类。当然,您必须使用条件来说明您的两种情况。
【讨论】:
虽然DecimalFormat JavDoc 有一个“科学记数法”部分,但这似乎不符合您的要求。也许您可以摆脱 JavaDoc 中描述的“工程符号”?
如果不是,那么最简单的方法是使用如下两种不同的格式:
private DecimalFormat df1 = new DecimalFormat("#.###");
private DecimalFormat df2 = new DecimalFormat("0.###E0");
public String formatDouble(double d) {
if( Math.abs(d) < 1000 )
return df1.format(d);
else
return df2.format(d);
}
【讨论】: