为什么浮点数这样计算
int main() {
double a = 0, b = 1;
printf("%f", -a / b);
}
得到的是 -0.000000
而换成整数计算
int main() {
int a = 0, b = 1;
printf("%d", -a / b);
}
得到的就是0
为什么浮点数这样计算
int main() {
double a = 0, b = 1;
printf("%f", -a / b);
}
得到的是 -0.000000
而换成整数计算
int main() {
int a = 0, b = 1;
printf("%d", -a / b);
}
得到的就是0
这是因为,在浮点数中,+0 和 -0 在内存中的表示方式是不同的。而整数是相同的。所以 printf
对浮点数(%f)会有 -0 和 +0,而整数(%d)则没有。
关于 -0, 详见这里
这个题意义不大
至于结果产生的原因,和数据的表示等相关,这个其实除非是开发编译器之类的,一般不用深究。