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

C++ 对字符串索引取值转double做除法得到错误结果问题

问题原因

你代码的问题出在对字符类型的取值逻辑理解有误:

  • C++ 中std::string存储的单个元素是char类型,字符'2'实际存储的是对应的ASCII编码值50,而非字面数值2
  • 你直接将char类型的y[0]赋值给double变量时,实际赋值的是ASCII值50,所以50 / 10.0的计算结果为5,和你预期的0.2不符
解决方法

要获取字符对应的字面数值,只需要用当前字符减去字符'0'的ASCII值即可,数字字符的ASCII编码是连续排列的,该方法可以稳定拿到0~9的对应整数值。
修正后的代码如下:

#include <iostream>

using namespace std;

int main()
{
    string y = "2";
    double x = y[0] - '0';
    cout << x / 10.0 << endl;
}

运行上述代码可以得到预期的输出0.2。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 15:18:03