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?