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?

¿Fue útil?

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.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top