Java中的灵活数字格式

时间:2011-10-09 11:57:12

标签: java number-formatting


我有一个问题,如何编写代码,根据标准使用不同的十进制数格式将双数字转换为字符串 例如
1)如果整数位数< N:使用数字格式为####(N次)。###(3个小数位)
2)如果整数位数> = N:使用科学数字格式0。### E0 我只想出手动计算整数数字的想法(除以10)。然后使用if / else。

还有其他办法吗?

2 个答案:

答案 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);
}