我试着比较两个字符串,但我没能做到。为什么?
#include <stdio.h>
#include <string.h>
int main(){
float a = 1231.23123;
char b[32];
sprintf(b, "%f", a);
printf("%s\n", b);
char c[32] = "1231.23123";
if (strcmp(c, b) == 0){
printf("SUCCES\n");
}
else{
printf("DIFFER\n");
}
return 0;
}
结果:
1231.231201
DIFFER
最佳答案
这两个字符串明显不同,因此strcmp()
的工作正常。
问题是1231.23123
不能表示为float
。实际上,可以表示为float
的最接近的数字是1231.231201171875
,这就是您所看到的(四舍五入到小数点后六位)。