int a=10;
float b;
printf("the no\n");
b=((10-1)/12)*50;
printf("b value is %f",b);
return 0;
但是当我计算科学计算中的b
值时,我们得到b=40
。我的问题是为什么它在我运行代码时显示b=0
答案 0 :(得分:2)
在计算中,表达式((10-1)/12)
是整数除以整数。第一个整数的计算结果为9
,由于9/12
小于1
,9/12
的计算结果为0
。然后将0
乘以50
,得到b = 0
。
为了使除法像浮点一样,使除法部分中的一个常量浮动。你可以用几种方法做到这一点,最短的方法是添加" f"作为其中一个数字的后缀,例如使用10F
代替10
来获取((10F-1)/12)
。这使得减法成为浮点运算,这使得原始表达式浮点运算的除法和乘法也成为可能。然后,这应该给你预期的(浮动)结果。
答案 1 :(得分:1)
尝试执行整数除法时会丢失数据。如前所述,
b=((10-1)/12)*50;
将产生0
因为:
((10-1)/12)*50; = (9/12)*50; = (0)*50; = 0;
为防止此数据丢失,您可以执行以下操作:
((10-1)/12.0)*50;
基本上,12.0
,它将被视为float
,因此适当地执行浮点除法。