字符串转换为浮点数出现精度丢失,该怎么解决

字符串转换为浮点数出现精度丢失
本帖最后由 u012480655 于 2013-10-19 12:58:44 编辑

char *a = "0.9";
double b=0;
sscanf_s(a,"%lf",&b);//结果b=0.90000000000000002
b=atof(a.c_str());//结果b=0.90000000000000002


char *a = "0.9";
float b=0;
sscanf_s(a,"%f",&b);//结果b=0.89999998


不管从字符串转换到 double 还是 float 都得不到想要的结果0.9

------解决方案--------------------
不管是double还是float都不能精确地表示0.9

------解决方案--------------------
无所谓啦,因为double或者float计算的时候,这点精度丢失还是可以承受的,而它们做比较的时候,一般不用=,而是使用<