为什么整数计算得到0而浮点数计算得到负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
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
这个题意义不大
至于结果产生的原因,和数据的表示等相关,这个其实除非是开发编译器之类的,一般不用深究。
这是因为,在浮点数中,+0 和 -0 在内存中的表示方式是不同的。而整数是相同的。所以
printf
对浮点数(%f)会有 -0 和 +0,而整数(%d)则没有。关于 -0, 详见这里