C++代码中的一个问题?
#include <iostream>
using namespace std;
int main()
{
double a = 29.2;
cout << (short)((a - (int)a)*10) << endl;
a = 2.2;
cout << (short)((a - (int)a)*10) << endl;
return 0;
}
输出结果如下:
1
2
编译器&系统:
g++ (GCC) 9.1.0
CentOS Linux release 7.7.1908 (Core)
请问结果为什么不是2 2而是1 2呢?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
double有精度损失
double a = 29.2; //29.19999..
正如ls说的,是浮点数表示不精确的问题,C++中可以用
setprecision
设置输出的精度: