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

代码运算结果恒为0求助:b=((a/n)*100)无论a、n取值均返回0

问题根源分析
  • 核心原因是整数除法的截断特性:在C、C++、Java、Go等支持静态整数类型的编程语言中,如果a和n都为整数类型(如int、long),当a < n时,a/n执行的是整数除法,会直接舍弃结果的小数部分返回整数,最终得到0,再乘以100结果自然始终为0。
  • 即使a的取值偶尔接近n,只要a/n的运算结果小于1,都会触发截断得到0,和你描述的运行现象完全匹配。
修复方案

仅需调整计算逻辑,避免先执行整数除法即可,常见两种修改方式:

  • 调整计算顺序,先乘后除:b = (a * 100) / n; (该方案仅适用于a*100不会超过当前整数类型取值上限的场景)
  • 先做强制类型转换再执行浮点除法:b = ((double)a / n) * 100; (把其中一个操作数转为浮点类型后,除法会按浮点运算规则执行,不会截断小数部分,兼容性更强)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 13:18:03