如何在kotlin中将两个整数div转换为十进制?

Ali*_*ran 22 kotlin

我 div Integer (ex 3/6) 的 div 以及如何在 kotlin 中将其变成 0.500000。我尝试了一些解决方案,但没有一个解决我的问题。

val num = BigDecimal(3.div(6))

    println("%.6f".format(num))
Run Code Online (Sandbox Code Playgroud)

但结果是 0.000000

Yon*_*bbs 39

3并且6都是Int,并且将一个Int除以另一个给出Int: 这就是为什么你返回 0。要获得非整数值,您需要将除法的结果设为非整数值。一种方法是Int在分割之前将其转换为其他内容,例如:

val num = 3.toDouble() / 6
Run Code Online (Sandbox Code Playgroud)

num现在将是Double值为 的 a 0.5,您可以根据需要将其格式化为字符串。


Der*_*ick 5

您可能会有更好的运气:

val num = 3.toBigDecimal().divide(6.toBigDecimal())
println(num)
// prints 0.5
Run Code Online (Sandbox Code Playgroud)

您必须将这两个数字都转换为 BigDecimal 才能使该方法起作用。这将显示精确的商,或者如果无法表示精确的商(即非终止小数),则抛出异常。

您可以按如下方式设置比例和舍入模式:

val num = 3.toBigDecimal().divide(6.toBigDecimal(), 4, RoundingMode.HALF_UP)
println(num)
// prints 0.5000
Run Code Online (Sandbox Code Playgroud)

参考文章链接