【发布时间】:2022-01-05 13:52:50
【问题描述】:
我将两个整数(例如 3/6)相除,我试图在 kotlin 中得到 0.500000 的结果。我尝试了一些解决方案,但没有一个能像我一样解决我的问题。
val num = BigDecimal(3.div(6))
println("%.6f".format(num))
但结果是 0.000000
【问题讨论】:
标签: kotlin
我将两个整数(例如 3/6)相除,我试图在 kotlin 中得到 0.500000 的结果。我尝试了一些解决方案,但没有一个能像我一样解决我的问题。
val num = BigDecimal(3.div(6))
println("%.6f".format(num))
但结果是 0.000000
【问题讨论】:
标签: kotlin
3 和6 都是Int,将一个Int 除以另一个得到Int:这就是为什么你会返回0。要得到一个非整数值,你需要得到结果的除法是一个非整数值。一种方法是在划分之前将Int 转换为其他内容,例如:
val num = 3.toDouble() / 6
num 现在将变为 Double,其值为 0.5,您可以根据需要将其格式化为字符串。
【讨论】:
你可能会有更好的运气:
val num = 3.toBigDecimal().divide(6.toBigDecimal())
println(num)
// prints 0.5
您必须将这两个数字都转换为 BigDecimal 才能使该方法起作用。这将显示确切的商,如果无法表示确切的商(即非终止小数),则抛出异常。
您可以按如下方式设置缩放和舍入模式:
val num = 3.toBigDecimal().divide(6.toBigDecimal(), 4, RoundingMode.HALF_UP)
println(num)
// prints 0.5000
【讨论】: