Biblioteca C ++ IOS - Precisión
Descripción
La precisión de punto flotante determina el número máximo de dígitos que se escribirán en las operaciones de inserción para expresar valores de punto flotante. La forma en que se interpreta esto depende de si la marca de formato de campo flotante está configurada en una notación específica (ya sea fija o científica) o no está configurada (usando la notación predeterminada, que no es necesariamente equivalente a fija ni científica).
Para la configuración regional predeterminada:
- Usando la notación de punto flotante predeterminada, el campo de precisión especifica el número máximo de dígitos significativos que se mostrarán en el recuento total tanto antes como después del punto decimal. Tenga en cuenta que no es un mínimo y, por lo tanto, no rellena el número mostrado con ceros finales si el número se puede mostrar con menos dígitos que la precisión.
- Tanto en la notación fija como en la científica, el campo de precisión especifica exactamente cuántos dígitos mostrar después del punto decimal, incluso si esto incluye ceros decimales finales. Los dígitos antes del punto decimal no son relevantes para la precisión en este caso.
Declaración
A continuación se muestra la declaración de la función ios_base :: precision.
get (1) streamsize precision() const;
set (2) streamsize precision (streamsize prec);
El primer formulario (1) devuelve el valor del campo de precisión de punto flotante actual para la secuencia.
La segunda forma (2) también lo establece en un nuevo valor.
Parámetros
prec - Nuevo valor para la precisión de punto flotante.
Valor devuelto
La precisión seleccionada en la secuencia antes de la llamada.
Excepciones
Basic guarantee - si se lanza una excepción, el flujo está en un estado válido.
Carreras de datos
Accede (1) o modifica (2) el objeto de flujo. El acceso simultáneo al mismo objeto de flujo puede provocar carreras de datos.
Ejemplo
En el siguiente ejemplo, se explica la función ios_base :: precision.
#include <iostream>
int main () {
double f = 3.14159;
std::cout.unsetf ( std::ios::floatfield );
std::cout.precision(5);
std::cout << f << '\n';
std::cout.precision(10);
std::cout << f << '\n';
std::cout.setf( std::ios::fixed, std:: ios::floatfield );
std::cout << f << '\n';
return 0;
}
Compilemos y ejecutemos el programa anterior, esto producirá el siguiente resultado:
3.1416
3.14159
3.141590000