在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在不同的区域设置:-)真棒的答案。简单快速。谢谢你的帮助,救了我一天,问题是当我们地区以外的人在运行我的应用程序时出现的。