如何在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.
相关产品推荐
相关产品推荐

