大家可能遇到这样的情况:
double x=2.555;
int y=(int)(x*1000);
cout << "y=" << y << endl;
结果:y=2554。
如果要准确得到整型数据,可以这样。
int y=(int)(x*1000.0);
或者是通过字符串转换。
char ch[20];
sprintf(ch,"%01f",x*1000);
y=atol(ch);
如上也一样能得到准确的答案。
本文探讨了在C++中使用double转int时遇到的精度丢失问题,并提供了两种解决方案:一是通过乘以浮点数再进行类型转换;二是利用字符串转换函数实现更精确的转换。
大家可能遇到这样的情况:
double x=2.555;
int y=(int)(x*1000);
cout << "y=" << y << endl;
结果:y=2554。
如果要准确得到整型数据,可以这样。
int y=(int)(x*1000.0);
或者是通过字符串转换。
char ch[20];
sprintf(ch,"%01f",x*1000);
y=atol(ch);
如上也一样能得到准确的答案。
4万+
14万+
2296

被折叠的 条评论
为什么被折叠?