VC驿站

 找回密码
 加入驿站

QQ登录

只需一步,快速开始

搜索
查看: 547|回复: 5

string与double小数转换问题

[复制链接]
32_avatar_middle
最佳答案
0 
在线会员 发表于 2019-1-17 16:06:41 | 显示全部楼层 |阅读模式
3驿站币
  1. #include <iostream>
  2. using namespace std;

  3. int main()
  4. {
  5.     string str = "1.25";
  6.         cout << "str = " << str << endl;
  7.         cout << "str[0] = " << str[0] << endl;
  8.         double d = (double)str[0];
  9.         cout << "d = " << d << endl;
  10.     return 0;
  11. }
复制代码


代码如上,输出如下:
  1. str = 1.25
  2. str[0] = 1
  3. d = 49
复制代码

为什么经过double强制转换之后1会变成49?

最佳答案

查看完整内容

楼主的理解是对的,其实字符都是被一些“国际标准”规定为相对应的数值,你的ASCII表就可以找出相随应的数值了。




上一篇:UpdateData()true 和 false 的区别是啥
下一篇:&quot;void __cdecl GuoTu(void)&quot; (?GuoTu@@YAXXZ) 这个要怎么改下?
81_avatar_middle
最佳答案
0 
在线会员 发表于 2019-1-17 16:06:42 | 显示全部楼层
楼主的理解是对的,其实字符都是被一些“国际标准”规定为相对应的数值,你的ASCII表就可以找出相随应的数值了。
32_avatar_middle
最佳答案
0 
ico_lz  楼主| 发表于 2019-1-17 16:30:47 | 显示全部楼层
string与double小数转换问题

看这个表 我推测是C++中将string字符串视为图形,因此经过强转换会将该图形对应的十进制进行打印。
34_avatar_middle
最佳答案
0 
在线会员 发表于 2019-1-20 00:33:38 | 显示全部楼层
"1.25",      (double)str[0],  str[0]是字符'1',不是数字1,他在内存里'1'=数字49,  cout输出是按变量类型输出的,cout << "str[0] = " << str[0] << endl; 识别出来的是字符型,所有输出了字符1,后面识别的是double,就变成49了
34_avatar_middle
最佳答案
0 
在线会员 发表于 2019-1-20 00:35:23 | 显示全部楼层
cout << "d = " <<(char) d << endl;  你试试是不是1
32_avatar_middle
最佳答案
0 
ico_lz  楼主| 发表于 2019-1-21 10:33:34 | 显示全部楼层
q3326937 发表于 2019-1-20 00:33
"1.25",      (double)str[0],  str[0]是字符'1',不是数字1,他在内存里'1'=数字49,  cout输出是按变量类型 ...

是的 我已经明白了 谢谢!
您需要登录后才可以回帖 登录 | 加入驿站 qq_login

本版积分规则

×【发帖 友情提示】
1、请回复有意义的内容,请勿恶意灌水;
2、纯数字、字母、表情等无意义的内容系统将自动删除;
3、若正常回复后帖子被自动删除,为系统误删的情况,请重新回复其他正常内容或等待管理员审核通过后会自动发布;
4、感谢您对VC驿站一如既往的支持,谢谢合作!

关闭

站长提醒上一条 /2 下一条

QQ|小黑屋|手机版|VC驿站 ( 辽ICP备09019393号 )|网站地图wx_jqr

GMT+8, 2020-10-21 20:29

Powered by CcTry.CoM

© 2009-2020 cctry.com

快速回复 返回顶部 返回列表