首页 > 解决方案 > Kotlin - 在保持精度的同时将浮点数转换为双精度数

问题描述

在 Kotlin123.456中是一个有效的Double值,但是,123.456F.toDouble()结果123.45600128173828- 大概只是两者之间处理精度的方式。

我希望能够在两者之间自由转换,特别是对于这样的情况:

123.456F -> 123.456 // Float to Double

123.456 -> 123.456F // Double to Float

在这种情况下,如何将浮点数转换为双精度并保持精度?

标签: kotlinfloating-point

解决方案


这是一个很大的丑陋,但您可以将您的转换Float为 aString并返回到 a Double

val myDouble: Double = 123.456f.toString().toDouble()
// 123.456d

您始终可以将其封装在扩展函数中:

fun Float.toExactDouble(): Double = 
    this.toString().toDouble()

val myDouble = 123.456f.toExactDouble()

推荐阅读