Biblioteca C ++ IOS - Precisão
Descrição
A precisão de ponto flutuante determina o número máximo de dígitos a serem escritos em operações de inserção para expressar valores de ponto flutuante. Como isso é interpretado depende se o sinalizador de formato floatfield está definido para uma notação específica (fixa ou científica) ou não (usando a notação padrão, que não é necessariamente equivalente a fixo ou científico).
Para a localidade padrão -
- Usando a notação de ponto flutuante padrão, o campo de precisão especifica o número máximo de dígitos significativos a serem exibidos na contagem total tanto os anteriores quanto os posteriores ao ponto decimal. Observe que não é um mínimo e, portanto, não preenche o número exibido com zeros à direita se o número puder ser exibido com menos dígitos do que a precisão.
- Nas notações fixas e científicas, o campo de precisão especifica exatamente quantos dígitos exibir após o ponto decimal, mesmo se isso incluir zeros decimais à direita. Os dígitos antes do ponto decimal não são relevantes para a precisão neste caso.
Declaração
A seguir está a declaração para a função ios_base :: precision.
get (1) streamsize precision() const;
set (2) streamsize precision (streamsize prec);
A primeira forma (1) retorna o valor do campo de precisão de ponto flutuante atual para o fluxo.
A segunda forma (2) também define um novo valor.
Parâmetros
prec - Novo valor para a precisão do ponto flutuante.
Valor de retorno
A precisão selecionada no stream antes da chamada.
Exceções
Basic guarantee - se uma exceção for lançada, o fluxo está em um estado válido.
Corridas de dados
Acessa (1) ou modifica (2) o objeto de fluxo. O acesso simultâneo ao mesmo objeto de fluxo pode causar disputas de dados.
Exemplo
No exemplo abaixo explica sobre a função 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;
}
Vamos compilar e executar o programa acima, isso produzirá o seguinte resultado -
3.1416
3.14159
3.141590000