Kotlin - 如何在没有科学记数法的情况下在Kotlin中将Double转换为String?

2022-09-04 19:47:42

我想在文本视图中设置没有科学记数法(指数)的双倍的完整值,什么是最好的方法?

我尝试使用方法将双精度值转换为String(),但我仍然有科学价值。

tvDepth.text=depth.toString()

我输入了值123456789.123456789,并期望在textView中具有相同的值,但我有:1.23456789123456789E8。

我不知道我需要多少个小数位,所以我无法在文本视图中设置之前设置它的格式。我读到在Java中是可用的静态方法

Double.toString(Double d)

但它在 Kotlin 中不可用。有什么好的方法可以正确显示此值吗?


答案 1

您可以在 .例如:.toBigDecimal().toPlainString()Double

println(PI.toBigDecimal().toPlainString())

打印输出:

3.141592653589793

答案 2
new BigDecimal("123456789.123456789").toPlainString();

这需要一些解释。浮点数, ,没有使用小数的概念;它始终是近似值,是 2 的幂之和。 是固定点。因此,必须使用带有 String 的构造函数来指定精度。doubleBigDecimal

并避免了科学的电子符号。toPlainString