Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Kotlin中有没有优雅的方法将Int转换为BigDecimal?_Kotlin - Fatal编程技术网

在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