Выведите число с плавающей запятой в виде десятичного числа с помощью printf () - PullRequest
0 голосов
/ 25 октября 2019

Я нашел очень хороший ответ на этот вопрос в этой теме

Я хочу немного подробнее понять, почему printf () не может напечатать число с плавающей запятой в виде десятичной дроби (с% d).

Программа простая, конвертирующая градусы Фаренгейта в градусы Цельсия.

Я понимаю, что %.f или %. 0f делает то, что я хочу. Но когда я пытаюсь сделать то же самое с % d , , результат непредсказуем .

Я искал более подробную информацию cplusplus , но я не вижу, где это переполняется или почему я получаю этот результат. Например, если вы используете неинициализированную переменную, вы получите какое-то случайное (или не очень) случайное значение, которое находится в том месте памяти, куда имя вашей переменной «указывает». Вот в чем причина?

float fahr, celsius;
int lower, upper, step;

lower = 0;    upper = 300;    step = 20;

fahr = lower;
while(fahr <= upper){
    celsius = (5 / 9.) * (fahr - 32);

    printf("%d\t%d\n",fahr,celsius);

    fahr+=step;
}

Я ожидал: 0 20 40 60 .... 300 (первый столбец) -17, -6, -4, ... (второй столбец)

вместо этого я получил 0 0 0 0 0 0 0 ,,, 0 (первый столбец) 0, 1077149696, 1078198272, ... (второй столбец)

...