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

不使用Math库如何对≥0的double类型val四舍五入取整?

实现逻辑说明

你目前的代码存在无限递归问题:方法内部直接调用自身没有终止条件,运行时会直接栈溢出,且完全没有实现四舍五入的核心逻辑。

四舍五入的核心规则可以利用Java基础类型的强制转换特性实现:Java中double强制转int时会直接截断小数部分,只保留整数位,不需要依赖任何Math类方法。

  • 正数场景:给原值加0.5后再强制转int,刚好符合四舍五入规则:比如1.3 + 0.5 = 1.8,截断后为1;1.6 + 0.5 = 2.1,截断后为2
  • 负数场景:给原值减0.5后再强制转int,符合负数四舍五入规则:比如-1.3 - 0.5 = -1.8,截断后为-1;-1.6 -0.5 = -2.1,截断后为-2

正确实现代码

public int roundOff(double val) {
    if (val >= 0) {
        return (int) (val + 0.5);
    } else {
        return (int) (val - 0.5);
    }
}

边界说明

  • 该实现默认输入的double值在int的取值范围内(即介于Integer.MIN_VALUE和Integer.MAX_VALUE之间),如果输入值超出该范围,强制类型转换会出现溢出,你可以根据需求额外增加范围校验逻辑。
  • 如果需要处理NaN、无穷大这类特殊double值,可以在方法开头增加对应判断,返回默认值或者抛出异常即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.10 03:27:02