字符串比较C - strcmp()

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.事实上,最近数可以表示为float1231.231201171875,这是你所看到的(按四舍五入sprintf()6位小数).