我最近在网上找到了这个C代码。
#include <stdio.h>
int main() {
double x = 3.1;
float y = 3.1;
if(x==y)
printf("yes");
else
printf("No");
}
输出否。
我添加了一些printf
来调查
#include <stdio.h>
int main() {
double x = 3.1;
float y = 3.1;
if(x==y)
printf("yes");
else
printf("No");
printf("%.10f\n", y);
printf("%.10f\n", x);
return 0;
}
输出为
3.0999999046
3.1000000000
为什么会这样?为什么float
变量在打印到10位小数时会失去其精度?