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

数组整数相除后存储为double类型结果异常问题求解

问题成因
  • 核心原因是整数除法精度截断:如果hPred和jData数组为整型(int/short/long等),C/C++中两个整型变量相除默认执行整数除法,会直接丢弃小数部分,仅保留整数商,后续再赋值给double类型的akur数组时已经丢失了小数精度,因此结果不符合预期。
  • 其次请确认分支逻辑是否匹配需求:当前代码中当hPred[i] > jData[i]时会额外减去1.000,如果你的预期只是单纯计算两个数组对应元素的商,该分支的减1操作也会导致结果偏离预期。
运行数据截图

jData[]
hPred[] and the result(akur[])
RESULT

解决方法
  • 执行除法前,将至少一个操作数强制转换为浮点类型(如double),触发浮点除法保留小数精度。
  • 按需调整分支逻辑:如果仅需要计算两数的商,可以直接删除多余的条件判断,简化代码。
修改后代码示例
for(int i = 0; i < iData; i++)
{
    // 强转其中一个操作数为double,触发浮点除法保留小数
    akur[i] = (double)hPred[i] / jData[i];
    // 如果你确实需要保留hPred大于jData时减1的逻辑,保留下方判断即可
    if(hPred[i] > jData[i])
    {
        akur[i] -= 1.000;
    }
}

内容的提问来源于stack exchange,提问作者Luthfi Hakim

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 08:36:05