用于从服务器读取jsonJSONObject
响应。服务器返回一些十进制数。普通数字是没有问题的,但是当有十进制数字时就会出现问题0.00068
。像这样的数字0.00068
会自动存储到Double
对象中,当尝试检索此类数字时,将返回数字的“计算机科学记数法”,即 6.8E4,即使该数字通过方法以 double 形式访问getDouble(index)
或通过方法以 String 形式访问getString(index)
。
已经尝试过这种将 double 值转换为字符串的方法,但已经消除了这种技术,因为在Double
转换为BigDecimal
. 这可以通过在缩放到 时舍入设置来消除BigDecimal.ROUND_CEILING
。但是我不想要任何缩放并且想要原始值,因为实际值是一个小十进制数,并且服务器保证该数字不会超过小数点后的 6 位。
BigDecimal big = new BigDecimal(new Double(0.00680));
System.out.println(big.toPlainString()); //0.006799999999999999621136392846665330580435693264007568359375
System.out.println(big.setScale(15, BigDecimal.ROUND_DOWN)); //0.006799999999999
是否有某种方法可以在没有缩放的情况下获得 Double 的实际字符串值,即数字 0.00680,或者我们可以防止JSONObject
将数字解释为它们各自的数字类。
提前致谢。