这是我的代码:
NumberFormat nf = NumberFormat.getInstance();
nf.setMaximumFractionDigits(14);
nf.setMinimumFractionDigits(0);
double d = 0;
System.out.println(nf.format(d));
使用Android SDK:打印“0.00000000000001” 使用Java SDK(j2SE):它打印“0”
为什么会出现这种差异? Android SDK的NumberFormat类中的错误?
答案 0 :(得分:0)
我可能是因为,作为一般规则,双精度数字并不精确...你不能得到小0和1来创建你想要的确切数字,所以,使用java SDK,它可能有算法判断其内部是否为Epsilon值,而android OS则不然。所以是的,它可能是Android OS上NumberFormatter中的一个错误。