0

我从命令行获取输入作为 int d。现在我面临这个问题:

float a,b;
int d;
float piece;    
printf("Please enter the parts to divide the interval: ");
scanf("%d", &d);

a=0;
b=1;

piece=b-a/(float)d;
printf("%f\n",piece);

我想要的只是打印一些依赖于 &d 的浮点数。例如,当我在这里写 5 时,对于 6 - 0,166666,我会得到 0.20000,但对于所有数字,我仍然会得到 1.000000,有人知道解决方案吗?

4

4 回答 4

6

除法优先于减法,因此您需要将减法放在括号内。您不必显式地将 d 强制转换为浮动;将一个浮点数除以它会促使它浮动。

piece = (b - a) / d;
于 2011-03-03T15:59:38.413 回答
5

使用括号:

piece=(b-a)/(float)d;
于 2011-03-03T15:59:28.737 回答
1

我认为这一行: piece=b-a/(float)d;

应该: piece=(float)(b-a)/(float)d;

只是我的2美分。

编辑

由于d是一个 int,也许可以试试这个:

piece=(float)((b-a)/d);

于 2011-03-03T15:59:18.727 回答
1

我相信你想要:

piece = (b - a)/d;

即,问题不在于除法,而在于操作顺序。

于 2011-03-03T16:00:06.433 回答