六月陌 2020-09-09 17:55 采纳率: 0%
浏览 51

简单的C++中谜一样的错误?我啥也看不出来

发现一个迷

int row_num = 0;
for(int i=0,len = row.length();i<len;i++)
    {
        cout<<"1.row_num = "<<row_num<<"\n";
        cout<<(row[i]-'A'+1)*pow(26,len-1-i)<<"\n";
        row_num += ((row[i]-'A'+1)*pow(26,len-1-i));
        cout<<(row[i]-'A'+1)*pow(26,len-1-i)<<"\n";
        cout<<"2.row_num = "<<row_num<<"\n";
        cout<<"\n";
    }

(row[i]-'A'+1)*pow(26,len-1-i) 这个东西cout出来是26
,然后row_num 加上它,之后有输出了一遍 (row[i]-'A'+1)*pow(26,len-1-i) 这个还是26,在输出row_num发现是25,,,???好迷惑啊,到底是哪里的问题?(row_num我已经初始化为0了)

这是输出结果:

1.row_num = 0
26
26
2.row_num = 25

row是一个字符串,内容就是AA,第一次循环的时候row_num是25 ,第二次是1,最后结果是26.

但我觉得不应该是:第一次26,第二次1 结果27吗?

  • 写回答

1条回答 默认 最新

  • threenewbee 2020-09-09 20:01
    关注

    pow是浮点数,存在精度误差,应该结果四舍五入一下,而不是直接和别的整数做四则运算。

    评论

报告相同问题?

悬赏问题

  • ¥15 虚幻5 UE美术毛发渲染
  • ¥15 CVRP 图论 物流运输优化
  • ¥15 Tableau online 嵌入ppt失败
  • ¥100 支付宝网页转账系统不识别账号
  • ¥15 基于单片机的靶位控制系统
  • ¥15 真我手机蓝牙传输进度消息被关闭了,怎么打开?(关键词-消息通知)
  • ¥15 下图接收小电路,谁知道原理
  • ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
  • ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本
  • ¥15 手机接入宽带网线,如何释放宽带全部速度