我尝试在双倍值的逗号后面只有三个数字。我这样做:
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
谢谢,
答案 0 :(得分:0)
结果是正确的。它显示(本地化)数字,精度为小数点后的3位数。
值6.082483660549182E-15
为0.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...