java.text.DecimalFormat正前缀尾数

时间:2014-12-10 09:19:56

标签: java decimalformat

是否可以在尾数中设置强制性标志?

例如,我想使用相同的DecimalFormat格式化0.01和1040.3: 1.00000e-002和1.040300e + 003

目前我正在使用:

DecimalFormatSymbols otherSymbols = new DecimalFormatSymbols(Locale.getDefault() );
otherSymbols.setDecimalSeparator('.');
otherSymbols.setExponentSeparator("e");

format="0.00000E000";
DecimalFormat formatter = new DecimalFormat(format, otherSymbols);

但是这种模式无法在尾数中显示“+”。

1 个答案:

答案 0 :(得分:0)

我不认为使用DecimalFormat可以实现这一点。但是,您可以使用以下内容:

public static void main(String[] args) {
    System.out.println(format(1040.3, "0.000000E000"));
}

public static String format(double number, String pattern) {
    DecimalFormatSymbols otherSymbols = new DecimalFormatSymbols(Locale.getDefault());
    otherSymbols.setDecimalSeparator('.');
    otherSymbols.setExponentSeparator("e");

    DecimalFormat formatter = new DecimalFormat(pattern, otherSymbols);
    String res = formatter.format(number);
    int index = res.indexOf('e') + 1;
    if (res.charAt(index) != '-') {
        res = res.substring(0, index) + "+" + res.substring(index);
    }
    return res;
}

这会产生您想要的字符串,1.040300e + 003。