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

Kotlin/Java中高效将Double转Int:移除小数点且无内存超限

高效的Double转Int方案(符合示例规则)

字符串处理的方式虽然直观,但会产生额外的字符串对象,在大量转换场景下效率偏低。我们可以通过纯数学运算实现更高效的转换,完全避免字符串操作:

核心思路

根据你的示例规则,转换逻辑为:

  • 将Double值逐步乘以10,直到小数部分消失,或者最多乘4次(保留小数点后最多4位)
  • 截断剩余的小数部分,转为Int(因为输入均为正数,直接强制转换即可截断)

Java实现

public static int doubleToInt(double d) {
    double temp = d;
    int powerCount = 0;
    // 最多处理4位小数,同时确保小数部分已消除
    while (temp != Math.floor(temp) && powerCount < 4) {
        temp *= 10;
        powerCount++;
    }
    // 输入保证不会超出Int范围,直接强制转换
    return (int) temp;
}

Kotlin实现

fun doubleToInt(d: Double): Int {
    var temp = d
    var powerCount = 0
    while (temp != temp.toInt().toDouble() && powerCount < 4) {
        temp *= 10
        powerCount++
    }
    return temp.toInt()
}

注意事项

  • 该方案仅适用于无精度丢失的正数Double(如小数点后最多4位的小数,或可精确表示的小数),若输入存在浮点数精度误差(如0.1这类无法精确表示的小数),可能会导致结果不符合预期。
  • 输入需确保转换后的Int不会超出Java/Kotlin的Int范围(你已明确此前提,无需额外处理)。

内容的提问来源于stack exchange,提问作者ibrahiem Mohamed

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 14:10:55