在Java中将双精度格式设置为两位小数会产生逗号而不是点[重复]
Posted
技术标签:
【中文标题】在Java中将双精度格式设置为两位小数会产生逗号而不是点[重复]【英文标题】:Formatting doubles to two decimal places in Java produces a comma instead of a dot [duplicate] 【发布时间】:2014-06-09 19:39:40 【问题描述】:我已经阅读了很多线程,这似乎是在我的双数中保留 2 个位置的最佳解决方案:
DecimalFormat df = new DecimalFormat("#.00");
double d = 1.234567;
System.out.println(df.format(d));
但是当我使用它时,它会打印:
1,23
我想保留 DOT,因为我需要使用这种格式 (#.##)(我将使用它作为字符串)。我如何保留这个点?
【问题讨论】:
当我使用您的代码时,我的会打印出点... 看看这个问题:***.com/questions/5054132/… @JamesClark 那是因为你和 OP 在不同的地区:-) 【参考方案1】:如果你想要一个点而不是逗号,你应该指定一个Locale
,它使用点作为小数分隔符,例如
DecimalFormat df = new DecimalFormat("#.00",
DecimalFormatSymbols.getInstance(Locale.US));
基本上,“。”在格式模式中并不表示“点”,而是表示“小数分隔符”。
【讨论】:
很棒的答案。简单快速。感谢您的帮助 救了我的命,当美国地区以外的其他人运行我的应用程序时,问题就来了。【参考方案2】:试试这个。在这种情况下,您不需要定义模式。
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,###
等等……
【讨论】:
【参考方案3】:小数点是否显示句点 (.) 或逗号 (,) 取决于您所在的位置,或者您的环境设置使用的区域设置。某些国家/地区使用逗号而不是点,因此这是预期行为。如果您绝对需要小数点 (.),您应该能够在 Decimal Format 声明中更改您的语言环境。
【讨论】:
以上是关于在Java中将双精度格式设置为两位小数会产生逗号而不是点[重复]的主要内容,如果未能解决你的问题,请参考以下文章
如何格式化数据库中的双精度数据并在 Android 上使用逗号作为小数分隔符设置到 Textview
BigDecimal的用法详解(保留两位小数,四舍五入,数字格式化,科学计数法转数字,数字里的逗号处理)