Bog*_* M. 1 c string comparison
我试图比较两个字符串,但我没有实现这一点.为什么?
#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;
}
Run Code Online (Sandbox Code Playgroud)
结果:
1231.231201
DIFFER
Run Code Online (Sandbox Code Playgroud)
NPE*_*NPE 10
这两个字符串明显不同,所以strcmp()它应该正常工作.
问题是1231.23123不能表示为float.事实上,最近数可以表示为float是1231.231201171875,这是你所看到的(按四舍五入sprintf()6位小数).