我对这个简单的代码有点问题。
我尝试过不同类型的铸件,但我在这里没有任何问题。如果有人告诉我为什么它总是打印0.0000000或类似的东西,我会很遗憾并提前感谢。
#include<stdio.h>
main()
{
double num1,num5;
printf ("Hello user\n");
printf ("Let the thickness of black and white brick are same and the value
is 2m\nAnd the gap between them is 1m\n");
printf ("\nEnter the length of the road:\n");
scanf ("%lf",&num1);
num5 = ((2/5)*num1);
printf ("%lf",num5);
return 0;
}
答案 0 :(得分:2)
(2/5)
执行整数计算,结果为0
。我建议采用其中一种方法
num5 = 0.4 * num1;
num5 = 2 * num1 / 5;
当0.4
已经是5的倍数时,第二个可能更准确(因为double
无法在num1
中准确表示)。在第一种情况下,错误已经存在
答案 1 :(得分:1)
在整数数学中,2/5为0(余数为2)。在C中,如何使用结果不会影响计算结果的方式(规则已经足够复杂)。因此,将结果乘以double
的事实不会改变计算2/5
(两个整数的商)的方式。
答案 2 :(得分:0)
2和5是整数,它们不是双倍的。添加小数点将产生正确的结果。
像这样。
num5 = ((2.0/5.0)* num1);
或
num5 = ((2.0/5)* num1);
或
num5 = ((2/5.0)* num1);