¿Cómo% rondas g hasta números de punto flotante?
-
27-09-2019 - |
Pregunta
Mientras que estoy usando %g
como especificador de formato en printf()
, a veces se redondea hasta 2 lugares después de la coma decimal, a veces hasta 3 lugares, someimes hasta 4 lugares ... ¿cómo lo hace?
En realidad, donde debemos utilizar %g
en lugar de %f
o %e
para los números de punto flotante?
Solución
El especificador de formato %g
hace su redondeo al igual que %f
haría, pero si %f
resultaría en 4.234000
, a continuación, se %g
omitir los ceros a la derecha e imprimir 4.234
.
%g
se debe utilizar cuando se tiene más sentido en el formato de salida que algunos números se imprimen como 12345.6
, mientras que un número ligeramente más grande se imprime como 1.235e04
.
Otros consejos
%g
automáticamente 'voltea' entre el uso de %e
y %f
dependiendo del valor, en un intento de mostrar el máximo de información posible, de la misma manera como las calculadoras de mano hacen.
También, con ceros %g
y el punto decimal no están incluidos.
Para la conversión %f
, la “precisión” es el número de dígitos después del punto decimal , mientras que para %g
es el número de significativos dígitos.
La precisión predeterminada es 6 en ambos casos.
Desde el printf manual de :
"La doble argumento se convierte en estilo F o E (o F o E para conversiones G). La precisión especifica el número de dígitos significativos. Si la precisión no se encuentra, se les da 6 dígitos; si la precisión es cero, se trata como se usa 1. Estilo de correo si el exponente de su conversión es menor que -4 o mayor que o igual a la precisión. ceros finales se eliminan de la parte fraccionaria del resultado; un punto decimal sólo aparece si es seguido por al menos un dígito. "
no me refiero a "RTFM", pero es probable que encontrará lo que está buscando en las secciones del manual en el control de la precisión y la longitud.