You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Kotlin中对两个Int做除法并得到BigDecimal结果?

Kotlin整数除法返回BigDecimal并保留6位小数的正确方案

你的问题出在先做了整数除法再转BigDecimal——Kotlin里两个Int类型的数相除(比如3.div(6))会直接舍去小数部分,得到的结果是0,再把0转成BigDecimal自然就只能得到0.000000了。

要解决这个问题,你需要先把整数转换成BigDecimal,再执行除法运算,同时指定小数精度和舍入模式,这样才能得到正确的带小数位的结果。

正确代码示例

import java.math.BigDecimal
import java.math.RoundingMode

fun main() {
    val dividend = 3
    val divisor = 6

    // 将整数转为BigDecimal后执行除法,指定保留6位小数+四舍五入模式
    val result = BigDecimal(dividend).divide(
        BigDecimal(divisor),
        6, // 保留6位小数
        RoundingMode.HALF_UP // 四舍五入模式,可根据需求替换其他模式
    )

    println(result) // 输出:0.500000
}

关键细节说明

  • 为什么要指定精度和舍入模式?如果直接执行BigDecimal(3).divide(BigDecimal(6)),对于能除尽的情况没问题,但如果遇到像1/3这种无法除尽的情况,会抛出ArithmeticException。指定精度和舍入模式可以避免这个问题,同时保证结果符合你需要的小数位数。
  • 如果你习惯用格式化输出,确保先得到正确的BigDecimal结果再格式化:
    println("%.6f".format(result)) // 同样输出:0.500000
    

这样就能完美实现你想要的3/6返回0.500000的需求啦!

内容的提问来源于stack exchange,提问作者Alif Al-Gibran

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.11 08:39:45