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

如何在Java中将double类型值四舍五入到最近的奇数整数?

将double四舍五入到最近的奇数整数(long类型)

以下是满足测试用例要求的实现方案:

核心逻辑

  • 先将double值四舍五入到最近的整数
  • 若该整数是奇数,直接返回
  • 若该整数是偶数:
    • 原数值大于这个偶数时,返回偶数+1
    • 原数值小于这个偶数时,返回偶数-1
    • 原数值等于这个偶数(即本身是偶数整数)时,可选择返回前一个或后一个奇数(示例默认返回后一个)

实现代码

public class RoundToOdd {

    public static void main(String[] args) {
        System.out.println(roundToOdd(2.1)); // 输出: 3
        System.out.println(roundToOdd(4.9)); // 输出: 5
        System.out.println(roundToOdd(3.7)); // 输出: 3
        System.out.println(roundToOdd(1.1)); // 输出: 1
        System.out.println(roundToOdd(7.0)); // 输出: 7
        System.out.println(roundToOdd(2.0)); // 输出: 3(若需返回1,修改对应分支即可)
    }

    public static long roundToOdd(double d) {
        long rounded = Math.round(d);
        // 已是奇数直接返回
        if (rounded % 2 != 0) {
            return rounded;
        }
        // 处理偶数情况
        if (d > rounded) {
            return rounded + 1;
        } else if (d < rounded) {
            return rounded - 1;
        } else {
            // 当d为偶数整数时,可选返回rounded-1或rounded+1
            return rounded + 1;
        }
    }
}

代码说明

  • 用Math.round(d)完成基础四舍五入,得到最近的整数
  • 通过rounded % 2 != 0判断是否为奇数
  • 偶数分支的处理完全匹配测试用例预期
  • 针对d是偶数整数的场景,可根据需求调整返回值(比如把return rounded + 1改成return rounded - 1就能得到1)

内容的提问来源于stack exchange,提问作者Daniel S.

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 22:54:35