在Kotlin中是否有任何优雅的方法可以将Int转换为BigDecimal?

时间:2019-10-18 06:05:07

标签: kotlin

我正在和Kotlin一起从事玩具项目。

在编写代码时,我觉得这些代码有些重复且不干净。

val a: Int = 1
val a_D: BigDecimal = a.toBigDecimal()
val b_D: BigDecimal = a.toBigDecimal()

那么,有什么方法可以使用优雅的方法来避免重复(类似于toBigDecimal())?

1 个答案:

答案 0 :(得分:1)

如果您不愿意在两行上创建BigDecimal,则BigDecimal的构造函数采用Int可以直接调用:

 val bigDecimalInt = BigDecimal(1)

这对于整数值是很好的,但对于诸如Double的构造函数和toBigDecimal这样的浮点值,BUT的行为实际上是不同的。构造函数创建一个传入的Double值的BigDecimal值,如果该值在浮点算术中不能精确表示,则将是“不正确的”。 toBigDecimal将值转换为字符串,然后使用提供“正确”值的值

val doubleNum:Double = 0.1
println(doubleNum.toBigDecimal()) // prints 0.1

val bigDecimal:BigDecimal = BigDecimal(0.1)
println(bigDecimal)               // prints 0.1000000000000000055511151231257827021181583404541015625

如果这些都不有意义,那么您可能需要阅读有关浮点算法的知识,这是一个影响所有/大多数编程语言的常见问题

所以toBigDecimal是更安全的选择