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

Java代码中double的多种用法疑问:第6行强制类型转换作用咨询

第6行代码中double的作用解答

核心原因是Java中两个int类型数值执行除法时,默认走整数除法规则:会直接截断小数部分,仅返回整数结果。

第6行的核心表达式为 (double) 5 / 100,其中字面量5和100默认都是int类型,如果没有前置的(double)强制转换,运算逻辑会变成:

  • 先执行int类型的5 / 100,结果为0
  • 代入计算1 - 0 = 1,相当于额外5%的折扣完全失效,得到的计算结果是错误的

加上(double)之后的运算逻辑:

  1. 首先将int类型的5强制转换为double类型
  2. 做除法运算时,另一个操作数100(int类型)会自动向上转型为double
  3. 最终执行double类型的除法,得到正确的折扣率0.05
  4. 代入后得到1 - 0.05 = 0.95,可以正确计算满500元后的折上折价格

你可以对比错误写法的结果验证:

// 错误写法:无强制转换,整数除法导致折扣失效
priceAfterDiscount = priceAfterDiscount * (1 - (5 / 100));
// 运算结果等价于 priceAfterDiscount = priceAfterDiscount * 1,金额无变化

正确场景下的运算结果:

  • 首次10%折扣后金额:800 * 0.9 = 720
  • 满500元额外95折后金额:720 * 0.95 = 684,和程序输出结果一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 03:21:01