C 浮点除法结果四舍五入为零
C Floating Point Division Result Rounded to Zero
为什么这个表达式的输出为零?
float x = ((1000)/(24 * 60 * 60));
把它分成两部分,给出正确的结果:
float x = (1000);
x /= (24 * 60 * 60);
看到这个答案,它会给你正确的输出
#include <stdio.h>
int main(void) {
float x = (float)1000/(24 * 60 * 60);
printf("%f",x);
return 0;
}
输出:0.011574
也可以看到输出:http://ideone.com/6bMp9r
声明
float x = ((1000)/(24 * 60 * 60));
执行以下操作:
- 声明类型
float
的变量 x
。
- 评价
((1000)/(24 * 60 * 60))
。
- 计算
24*60*60
为 86400。
- 计算
1000/86400
为 0。
- 将其结果(即 0)分配给
x
。
第二步,((1000)/(24 * 60 * 60))
为零——除法是整数除法,因为两个操作数都是整数。稍后将结果分配给浮点变量这一事实没有任何区别。
最简单的解决方法是确保除法的两边都是浮点数,因此它将使用浮点除法。例如,您可以将 1000
更改为 1000.0f
。
为什么这个表达式的输出为零?
float x = ((1000)/(24 * 60 * 60));
把它分成两部分,给出正确的结果:
float x = (1000);
x /= (24 * 60 * 60);
看到这个答案,它会给你正确的输出
#include <stdio.h>
int main(void) {
float x = (float)1000/(24 * 60 * 60);
printf("%f",x);
return 0;
}
输出:0.011574 也可以看到输出:http://ideone.com/6bMp9r
声明
float x = ((1000)/(24 * 60 * 60));
执行以下操作:
- 声明类型
float
的变量x
。 - 评价
((1000)/(24 * 60 * 60))
。- 计算
24*60*60
为 86400。 - 计算
1000/86400
为 0。
- 计算
- 将其结果(即 0)分配给
x
。
第二步,((1000)/(24 * 60 * 60))
为零——除法是整数除法,因为两个操作数都是整数。稍后将结果分配给浮点变量这一事实没有任何区别。
最简单的解决方法是确保除法的两边都是浮点数,因此它将使用浮点除法。例如,您可以将 1000
更改为 1000.0f
。