Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/362.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Java中,格式化双精度到小数点后两位会产生逗号而不是点_Java_Double_Number Formatting - Fatal编程技术网

在Java中,格式化双精度到小数点后两位会产生逗号而不是点

在Java中,格式化双精度到小数点后两位会产生逗号而不是点,java,double,number-formatting,Java,Double,Number Formatting,我读过很多文章,在我的双倍数字中保留两个位置似乎是最好的解决方案: DecimalFormat df = new DecimalFormat("#.00"); double d = 1.234567; System.out.println(df.format(d)); 但当我使用它时,它会打印: 1,23 我想保留点,因为我需要使用这种格式(#.###),我将使用它作为字符串。我怎样保持这个圆点 如果需要点而不是逗号,则应指定使用点作为小数分隔符的区域设置,例如 DecimalFormat d

我读过很多文章,在我的双倍数字中保留两个位置似乎是最好的解决方案:

DecimalFormat df = new DecimalFormat("#.00");
double d = 1.234567;
System.out.println(df.format(d));
但当我使用它时,它会打印:

1,23


我想保留点,因为我需要使用这种格式(#.###),我将使用它作为字符串。我怎样保持这个圆点

如果需要点而不是逗号,则应指定使用点作为小数分隔符的
区域设置,例如

DecimalFormat df = new DecimalFormat("#.00",
                                    DecimalFormatSymbols.getInstance(Locale.US));

基本上,格式模式中的“.”并不意味着“点”,它意味着“十进制分隔符”。

试试这个。在这种情况下,不需要定义模式

DecimalFormat format = (DecimalFormat) NumberFormat.getNumberInstance(Locale.FRENCH);
format.setMaximumFractionDigits(2);
System.out.println(format.format(1.234567));

看看这个节目找出您的区域设置并使用特定于区域设置的
NumberFormat

import java.text.DecimalFormat;
import java.text.NumberFormat;
import java.util.Locale;

public class LocaleNumberFormatDemo {

    /**
     * @param args
     */
    public static void main(String[] args) {

        double no = 123456.7890;

        System.out.println(Locale.getAvailableLocales().length);
        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,###

以此类推……

小数点是否显示句点(.)或逗号(,)取决于您所在的位置,或者更确切地说取决于您的环境设置使用的语言环境。一些国家使用逗号而不是点,因此这是预期行为。如果您绝对需要小数点(.),您应该能够在十进制格式声明中更改您的区域设置。

我在使用代码时打印出点…看看这个问题:@JamesClark这是因为您和OP在不同的区域设置:-)真棒的答案。简单快速。谢谢你的帮助,救了我一天,问题是当我们地区以外的人在运行我的应用程序时出现的。