为什么此整数不格式化为表现良好的数字?

时间:2019-07-18 23:42:35

标签: android kotlin

我在 Android Studio 3.4.2 中。我生成了一个伪造的 Kotlin 代码,该代码会产生奇怪的格式行为。 onCreate开始后不久就放置了该零件。这是一个纯整数数字!

fmtFloat = DecimalFormat("#,###.##############")   
fmtFloat.setRoundingMode(RoundingMode.CEILING)
Log.d("myMess", fmtFloat.format("98765432".toDouble()))

logCat图片是

LogCat

当我在评估表达式窗口中运行此表达式时,同样的问题:

Evaluate Window

但是,当我在 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位! Java number

0 个答案:

没有答案