在Double中逗号后只有三个数字

时间:2014-04-19 20:51:39

标签: java casting decimalformat

我尝试在双倍值的逗号后面只有三个数字。我这样做:

DecimalFormat dfi_ = new DecimalFormat("#.000");

我的双重身份:

double myD = 6.082483660549182E-15;
System.out.println("DF Version of myD: " + dfi_.format(myD));

但结果是:DF Version of myD: ,000

谢谢,

2 个答案:

答案 0 :(得分:0)

结果是正确的。它显示(本地化)数字,精度为小数点后的3位数。

6.082483660549182E-150.0000000000000060824..非常接近0。

现在,要在科学记数法中显示数字,请考虑"###.0E0"的格式 - 这应该导致6,082E-15的输出(其中小数由区域设置确定),我认为这是期望的

(如果问题只是逗号,那那只是一个本地化问题。)

答案 1 :(得分:0)

试试这个。找出您所在的地区(区域设置)并使用该区域设置DecimalFormat

有关详细信息,请查看NumberFormat#getNumberInstance(Locale)

    double no = 123456.7890;

    for (Locale locale : Locale.getAvailableLocales()) {
        NumberFormat numberFormat = DecimalFormat.getNumberInstance(locale);

        System.out.println("========================================");
        System.out.println(locale.getDisplayCountry() + " - " + locale.toString());
        System.out.println(numberFormat.format(no));

        DecimalFormat decimalFormat = (DecimalFormat) NumberFormat.getNumberInstance(locale);
        String numberPattern = decimalFormat.toLocalizedPattern();
        System.out.println(numberPattern);
    }

输出:

        ========================================
        Malaysia - ms_MY
        123,456.789
        #,##0.###
        ========================================
        Qatar - ar_QA
        123,456.789
        #,##0.###;#,##0.###-
        ========================================
        Iceland - is_IS
        123.456,789
        #.##0,###
        ========================================
        Finland - fi_FI
        123 456,789
        # ##0,###
        ========================================
         - pl
        123 456,789
        # ##0,###
        ========================================
        Malta - en_MT
        123,456.789
        #,##0.###

 and so on...