我正在和Kotlin一起从事玩具项目。
在编写代码时,我觉得这些代码有些重复且不干净。
val a: Int = 1
val a_D: BigDecimal = a.toBigDecimal()
val b_D: BigDecimal = a.toBigDecimal()
那么,有什么方法可以使用优雅的方法来避免重复(类似于toBigDecimal())?
答案 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
是更安全的选择