运行程序时未达到预期值

时间:2015-06-07 13:16:32

标签: c

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

2 个答案:

答案 0 :(得分:2)

在计算中,表达式((10-1)/12)是整数除以整数。第一个整数的计算结果为9,由于9/12小于19/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,因此适当地执行浮点除法。