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

如何将double类型四舍五入至最近整数?Java自定义实现问题

解决正数double四舍五入后求和的问题

你的代码存在两个核心问题,导致无法满足需求:

  1. 直接用(int)强转double是截断小数部分,并非四舍五入,所以像4.5这类数会被转成4,而非期望的5;
  2. 你对两数总和加0.5再转int,这是对总和做四舍五入,和需求里“分别四舍五入两个数后求和”的逻辑不符(比如3.5+3.5,分别四舍五入是4+4=8,而总和加0.5转int得到7,结果完全错误)。

针对正数的四舍五入,我们可以手动实现逻辑:对每个数单独执行(int)(num + 0.5),就能得到正确的四舍五入结果——正数小数部分≥0.5时,加0.5后整数位会进1,强转int即可拿到进位后的数;小数部分<0.5时,加0.5后整数位不变,强转int就是原整数部分。

修正后的代码如下:

Scanner scan = new Scanner(System.in);
System.out.print("Please input two decimal numbers:");
double hit_1 = scan.nextDouble();
double hit_2 = scan.nextDouble();

// 分别对两个数执行四舍五入
int rounded1 = (int)(hit_1 + 0.5);
int rounded2 = (int)(hit_2 + 0.5);
int sum = rounded1 + rounded2;

System.out.print("Answer: " + rounded1 + " + " + rounded2 + " = " + sum);

测试验证:

  • 输入4.5和3.4,输出Answer: 5 + 3 = 8,符合预期;
  • 输入2.3和5.6,输出Answer: 2 + 6 = 8,结果正确。

内容的提问来源于stack exchange,提问作者oh my god

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 07:20:37