我在 Android Studio 3.4.2 中。我生成了一个伪造的 Kotlin 代码,该代码会产生奇怪的格式行为。 onCreate
开始后不久就放置了该零件。这是一个纯整数数字!
fmtFloat = DecimalFormat("#,###.##############")
fmtFloat.setRoundingMode(RoundingMode.CEILING)
Log.d("myMess", fmtFloat.format("98765432".toDouble()))
logCat
图片是
当我在评估表达式窗口中运行此表达式时,同样的问题:
但是,当我在 Android Studio 中将SAME代码作为桌面测试运行时,没有错误。
98.765.432
在Kotlin Playground中也可以正常工作。
为什么在 Android 应用中会发生这种情况,而在桌面上却有所不同?
在调试Android应用程序时,我在评估窗口中执行:
"98765432".toDouble()==98765432.0
是true
!
更新
当对十进制格式使用默认的舍入模式(HALF_EVEN)时,它在我的Android应用中也可以使用。在以指数格式显示数字之前,它一直接受到14位(我为安全起见已选择)。因此,谜团还在继续……
更新2
在Decimal Format
变量中以格式方法输入的我的数字是Double
,它的64 bits尾数为53位。它存储整数直到16位数字,而我的数字只有8位!