我正在将现有应用程序移植到 Android,并偶然发现了以下问题。这段代码在 Java SE 上运行良好:
String NAN_STRING = "";
DecimalFormatSymbols SYMBOLS;
SYMBOLS = new DecimalFormatSymbols();
SYMBOLS.setDecimalSeparator('.');
SYMBOLS.setNaN(NAN_STRING);
DecimalFormat format = new DecimalFormat("0.###", SYMBOLS);
double d = Double.NaN;
System.out.print("x");
System.out.print(format.format(d));
System.out.print("y");
但是,在 Android 上,我NoSuchElementException
在执行时得到一个format.format(d)
:
Caused by: java.util.NoSuchElementException
at libcore.icu.NativeDecimalFormat$FieldPositionIterator.next(NativeDecimalFormat.java:564)
at libcore.icu.NativeDecimalFormat$FieldPositionIterator.setFieldPosition(NativeDecimalFormat.java:550)
at libcore.icu.NativeDecimalFormat$FieldPositionIterator.access$000(NativeDecimalFormat.java:507)
at libcore.icu.NativeDecimalFormat.formatDouble(NativeDecimalFormat.java:264)
at java.text.DecimalFormat.format(DecimalFormat.java:677)
at java.text.NumberFormat.format(NumberFormat.java:211)
at com.example.androidtestbed.MainActivity.onCreate(MainActivity.java:27)
如果我NAN_STRING
用 eg"NaN"
而不是替换""
,它似乎可以工作,但这不是我想要的行为。我做错了什么还是这是Android类中的错误?