Estas parecen ser 5 preguntas en lugar de una. De todos modos:
std::fixed
se usa para indicar que siempre desea tener un formato de punto fijo en lugar de usar notación científica donde esta notación es más apropiada. Cuando se necesitan muchos dígitos para representar el valor razonablemente, el formato cambiará el usox.yyyyyyEee
(puede pedir que use siempre formato científico usandostd::scientific
).std::setw()
¡No le importa qué valor está formateado! Cuando se formateado un valor y hay un positivoout.width()
establecido, la salida estará acolchada conout.fill()
personaje para ser al menosout.width()
personajes de ancho. Si la salida es más grande queout.width()
De todos modos, no se producirá relleno. Después de cada operación de salida [que tomaout.width()
en cuenta] elout.width()
se restablece a0
(Todas las demás opciones de formato no se restablecen automáticamente).- Cualquier personaje cuenta para el ancho, incluido el signo, miles de separadores, puntos decimales, etc. El punto decimal no cuenta para la precisión:
out.precision()
es el número de dígitos fraccionales (parastd::fixed
formato) o el número de dígitos no exponentes (parastd::scientific
formato). - El ancho es cuántos caracteres serán llenados por la salida, la precisión especifica cuántos dígitos [fraccionales] se producirán.
- Los valores de punto flotante binario pueden representar muy pocos dígitos decimales (para
float
es normalmente 6; Puede averiguar cuántos dígitos se pueden usar de forma segura utilizandostd::numeric_limits<float>::digits10
). Intentar usar más dígitos que eso probablemente dará como resultado una salida inesperada al procesar valores decimales (cuando procese los valores binarios en los que puede estar interesado hastastd:numeric_limits<float>::digits
lugares). Es posible que desee echar un vistazo Lo que todo informático debe saber sobre la aritmética de punto flotante.