我试着比较两个字符串,但我没能做到。为什么?

#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,这就是您所看到的(四舍五入到小数点后六位)。

10-08 20:09