Простое использование sprintf - C

Я пытаюсь понять, почему возникает большая проблема, используя меньшую программу в качестве примера. Эта небольшая программа не работает, поэтому я полагаю, что это мое понимание функции ошибочно.

Насколько я (предполагал) полагал, следующая программа должна инициализировать строку, содержащую до 30 символов, затем преобразовать число от 5 до девяти значащих цифр в эту строку. Затем программа должна распечатать значение «5.00000000». Однако программа выводит значение 7.96788 (...). Почему это так?

#include <stdio.h>

int main()
{
    char word[30];
    sprintf(word, "%.9g", 5);
    printf(word);
    return 0;
}
21
задан Peter Mortensen 22 May 2017 в 19:17
поделиться