Especificador de largura de impressão para manter a precisão do valor de ponto flutuante
Tem algumaprintf
especificador de largura que pode ser aplicado a um especificador de ponto flutuante que formata automaticamente a saída para o número necessário deDígitos significantes de tal forma que ao escanear a string de volta, o valor original do ponto flutuante é adquirido?
Por exemplo, suponha que eu imprima umfloat
a uma precisão de2
casas decimais:
float foobar = 0.9375;
printf("%.2f", foobar); // prints out 0.94
Quando eu digitalizo a saída0.94
, Eu não tenho nenhuma garantia de conformidade com os padrões que receberei o original0.9375
valor de ponto flutuante de volta (neste exemplo, eu provavelmente não vou).
Eu gostaria de dizer uma maneiraprintf
para imprimir automaticamente o valor de ponto flutuante para o número necessário deDígitos significantes para garantir que ele possa ser escaneado de volta para o valor original passado paraprintf
.
Eu poderia usar algumas das macros emfloat.h
paraderivar a largura máxima passar paraprintf
, mas já existe um especificador para imprimir automaticamente o número necessário deDígitos significantes - ou pelo menos até a largura máxima?