Странный вывод с гранулами c

float f=44268/107402;
printf("\n%f",f);

выход:

0.000000

Как это может произойти!

Я использую pelles c ide на win 7.

3 ответа

Решение

Компилятор обрабатывает операнды как целые числа. Пытаться:

float f = 44268.0 / 107402;
                ^

Или, может быть

float f = (float)44268 / 107402;

Integer division truncates

float f=44268.0/107402;

Создание одного числа с плавающей запятой автоматически продвигает другое число до числа с плавающей запятой, и в конечном итоге получается результат с плавающей запятой.

float f = 44268 / 107402;

Переменная будет инициализирована целочисленным значением. Вы должны добавить с плавающей запятой, чтобы сказать компилятору, что вы хотите значение с плавающей запятой.

float f = 44268. / 107402.;
Другие вопросы по тегам