double int转换

庚武讲堂 2009-04-23 11:16:19
double d=10.2;
d-=int(d);
d=d*100;
cout<<int(d)<<endl;

想不通,d怎么就变成19了哩??高手解释下.有啥解决办法
...全文
558 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
shinian1478 2009-04-23
  • 打赏
  • 举报
回复
直接用这cout<<d<<endl;就可以吧,不用类型转换
hjjdebug 2009-04-23
  • 打赏
  • 举报
回复
看错了,在这道题中,这种转换也是允许的。

cout < <int(d) < <endl;
改成
cout < <(d) < <endl;
按浮点数输出即可, 结果20.
Th_Pk_Ying 2009-04-23
  • 打赏
  • 举报
回复
学习
庚武讲堂 2009-04-23
  • 打赏
  • 举报
回复
那咋办哩,取得小数部分乘100怎么做?
hjjdebug 2009-04-23
  • 打赏
  • 举报
回复
看出来了,想整死计算机!
double 和 int 不能互相转,除非你知道你在干什么。
因为double的数据表达方式是归一化计数法,与int的16进制表示大不相同。
xiaocha 2009-04-23
  • 打赏
  • 举报
回复
精度问题,20用double表示时,在计算机内部为19.999999...
aaaa3105563 2009-04-23
  • 打赏
  • 举报
回复
double i = 10.2;
int j = 0;
j = double(i);
cout << (i - j) * 100 << endl;
这样····· 保险 输出 20
weichaohnu 2009-04-23
  • 打赏
  • 举报
回复
double型在存储的时候 精度会丢失
10.2最后的存储结果是10.19999999999....
所以 最后的结果变成19了
可以尝试用数组来存储以及转换

64,676

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧