lenguaje - Printf número variable de decimales en float
printf y scanf en dev c++ (2)
Encontré un formato interesante para imprimir cadenas de longitud fija no terminadas como esta:
char newstr[40] = {0};
sprintf(newstr,"%.*s", sizeof(mystr), mystr);
Así que creo que tal vez hay una forma bajo el comando printf para imprimir un número flotante ...
"% 8.2f"
Tener capacidad para elegir número de decimales con número entero.
Algo como esto:
sprintf(mystr, "%d %f", numberofdecimals, floatnumbervalue)
EDITAR - Solución:
(para redondear y borrar un número flotante a la precisión deseada).
int precision = 2;
char kolf[16] = {0};
sprintf(kolf, "%8.*f", precision, mystruct.myfloat);
float kol = atof(kolf);
También puede usar ".*"
Con puntos flotantes, consulte también http://www.cplusplus.com/reference/cstdio/printf/ (se refiere a C ++, pero los especificadores de formato son similares)
.number : Para los especificadores a, A, e, E, f y F: este es el número de dígitos que se van a imprimir después del punto decimal (por defecto, es 6).
...
. * : La precisión no se especifica en la cadena de formato, sino como un argumento de valor entero adicional que precede al argumento que se debe formatear.
Por ejemplo:
float floatnumbervalue = 42.3456;
int numberofdecimals = 2;
printf("%.*f", numberofdecimals, floatnumbervalue);
Salida:
42.35
También puede usar el asterisco para el ancho del campo y la precisión:
printf("%*.*f/n", myFieldWidth, myPrecision, myFloatValue);
Véase, por ejemplo, esta referencia .