在Kotlin中有没有优雅的方法将Int转换为BigDecimal?
我正在和科特林一起做我的玩具项目 在编写代码时,我觉得这些代码有些重复,不干净在Kotlin中有没有优雅的方法将Int转换为BigDecimal?,kotlin,Kotlin,我正在和科特林一起做我的玩具项目 在编写代码时,我觉得这些代码有些重复,不干净 val a: Int = 1 val a_D: BigDecimal = a.toBigDecimal() val b_D: BigDecimal = a.toBigDecimal() 那么,有没有任何方法可以用优雅的方式避免这些重复(比如toBigDecimal())呢 如果您为必须在两行上创建BigDecimal而烦恼,BigDecimal具有可直接调用的Int构造函数: val bigDecimalInt
val a: Int = 1
val a_D: BigDecimal = a.toBigDecimal()
val b_D: BigDecimal = a.toBigDecimal()
那么,有没有任何方法可以用优雅的方式避免这些重复(比如toBigDecimal())呢 如果您为必须在两行上创建
BigDecimal
而烦恼,BigDecimal
具有可直接调用的Int
构造函数:
val bigDecimalInt = BigDecimal(1)
这对于整数值很好,但是对于像Double
这样的浮点值,构造函数和toBigDecimal
实际上表现不同。构造函数为传入的Double
值创建一个BigDecimal值,如果该值不能用浮点算法精确表示,则该值将“不正确”toBigDecimal
将值转换为字符串,然后使用给出“正确”值的字符串
如果这些都没有意义,您可能需要阅读浮点运算,这是影响所有/大多数编程语言的常见问题
因此
toBigDecimal
是一个更安全的选项您不需要编写类型注释,因此val a_D=a.toBigDecimal()
就足够了,而且没有冗余(因为您必须在某个地方告诉Kotlin您想要一个大的十进制值)。是的。我知道类型声明是多余的,但我想指出的是toBigDecimal()函数调用类型转换库来获得答案!我必须适应kotlin的发展!公平地说,我认为上述所有内容也适用于在Java中使用BigDecimal:-)
val doubleNum:Double = 0.1
println(doubleNum.toBigDecimal()) // prints 0.1
val bigDecimal:BigDecimal = BigDecimal(0.1)
println(bigDecimal) // prints 0.1000000000000000055511151231257827021181583404541015625