Specyfikator szerokości Printf do utrzymania precyzji wartości zmiennoprzecinkowej

Czy jestprintf specyfikator szerokości, który można zastosować do specyfikatora zmiennoprzecinkowego, który automatycznie sformatowałby wynik do niezbędnej liczbyznaczące cyfry tak, że podczas skanowania łańcucha z powrotem uzyskuje się oryginalną wartość zmiennoprzecinkową?

Załóżmy na przykład, że drukuję afloat z precyzją2 miejsca dziesiętne:

float foobar = 0.9375;
printf("%.2f", foobar);    // prints out 0.94

Kiedy skanuję dane wyjściowe0.94, Nie mam żadnej zgodnej z normami gwarancji, że dostanę oryginał0.9375 wartość zmiennoprzecinkowa z powrotem (w tym przykładzie prawdopodobnie nie będę).

Chciałbym powiedzieć sposóbprintf aby automatycznie wydrukować wartość zmiennoprzecinkową na niezbędną liczbęznaczące cyfry aby upewnić się, że może zostać zeskanowany z powrotem do oryginalnej wartości przekazanej doprintf.

Mogę użyć niektórych makrfloat.h douzyskać maksymalną szerokość przejść doprintf, ale czy istnieje już specyfikator do automatycznego drukowania do niezbędnej liczbyznaczące cyfry - lub przynajmniej do maksymalnej szerokości?

questionAnswers(7)

yourAnswerToTheQuestion