我有一个问题,如何编写代码,根据标准使用不同的十进制数格式将双数字转换为字符串
例如
1)如果整数位数< N:使用数字格式为####(N次)。###(3个小数位)
2)如果整数位数> = N:使用科学数字格式0。### E0
我只想出手动计算整数数字的想法(除以10)。然后使用if / else。
还有其他办法吗?
答案 0 :(得分:1)
您可以使用课程NumberFormat
。当然,你必须使用条件来解释你的两种情况。
答案 1 :(得分:1)
虽然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);
}