C - как разделить поплавки? - PullRequest
0 голосов
/ 03 марта 2011

Я получаю ввод из командной строки как 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, я получаю 0.20000, для 6 - 0,166666, но я все еще получаю 1,000000 для всех чисел, кто-нибудь знает решение?

Ответы [ 4 ]

6 голосов
/ 03 марта 2011

Деление имеет приоритет над вычитанием, поэтому вы должны поместить вычитание в круглые скобки. Вам не нужно явно приводить d к float; деление поплавка на него будет способствовать его плаванию.

piece = (b - a) / d;
3 голосов
/ 03 марта 2011

Используйте скобки:

piece=(b-a)/(float)d;
1 голос
/ 03 марта 2011

Полагаю, вы хотите:

piece = (b - a)/d;

Т.е. проблема не в делении, а в порядке операций.

1 голос
/ 03 марта 2011

Я думаю, что эта строка: piece=b-a/(float)d;

должна быть: piece=(float)(b-a)/(float)d;

Только мои 2 цента.

РЕДАКТИРОВАТЬ

Поскольку d является целым числом, возможно, попробуйте это вместо:

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

...