Como usar o setprecision em C++
-
Utilize
setprecision()
Método para definir precisão personalizada para flutuadores -
Utilize
setprecision()
estd::fixed()
para Definir Precisão Personalizada para Flutuadores -
Utilize
setprecision()
estd::fixed()
para Alinhar Flutuadores a um Ponto Decimal
Este artigo demonstrará vários métodos sobre como utilizar o método setprecision
em C++.
Utilize setprecision()
Método para definir precisão personalizada para flutuadores
A setprecision()
faz parte da biblioteca de manipuladores <iomanip>
e pode ser utilizada para modificar a precisão padrão dos números de ponto flutuante. A setprecision()
é normalmente utilizada em expressões com fluxos de E/S.
O exemplo a seguir mostra como definir a precisão do número de pontos flutuantes para o objeto de fluxo de saída cout
. Observe que, setprecision()
se aplica ao número inteiro (parte inteira e parte fracionada) e utiliza notação científica quando os números têm uma magnitude maior do que a precisão especificada.
#include <iomanip>
#include <iostream>
#include <vector>
using std::cout;
using std::endl;
using std::fixed;
using std::setprecision;
using std::vector;
int main() {
vector<double> d_vec = {123.231, 2.2343, 0.324, 0.012,
26.9491092019, 11013, 92.001112, 0.000000234};
for (auto &i : d_vec) {
cout << setprecision(3) << i << " | ";
}
cout << endl;
return EXIT_SUCCESS;
}
Resultado:
123 | 2.23 | 0.324 | 0.012 | 26.9 | 1.1e+04 | 92 | 2.34e-07 |
Utilize setprecision()
e std::fixed()
para Definir Precisão Personalizada para Flutuadores
Alternativamente, podemos utilizar setprecision()
e fixed()
manipuladores de fluxo em conjunto para imprimir valores de ponto flutuante com o mesmo número de dígitos após o ponto decimal. O método fixed()
define a parte fracional do número para um comprimento fixo, que por padrão é de 6 dígitos. Na amostra de código a seguir, saímos para o fluxo de saída e chamamos ambos os manipuladores antes que o número seja inserido na saída.
#include <iomanip>
#include <iostream>
#include <vector>
using std::cout;
using std::endl;
using std::fixed;
using std::setprecision;
using std::vector;
int main() {
vector<double> d_vec = {123.231, 2.2343, 0.324, 0.012,
26.9491092019, 11013, 92.001112, 0.000000234};
for (auto &i : d_vec) {
cout << fixed << setprecision(3) << i << " | ";
}
cout << endl;
return EXIT_SUCCESS;
}
Resultado:
123.231 | 2.234 | 0.324 | 0.012 | 26.949 | 11013.000 | 92.001 | 0.000 |
Utilize setprecision()
e std::fixed()
para Alinhar Flutuadores a um Ponto Decimal
Finalmente, podemos combinar os manipuladores setw
, right
, setfill
, fixed
e setprecision
para emitir números de ponto flutuante alinhados ao ponto decimal. O método setw
especifica a largura do fluxo de saída com o número de caracteres passados como argumento. O setfill
define um caractere pelo qual o espaço não utilizado será preenchido e o método right
diz cout
o lado ao qual se aplica a operação de preenchimento.
#include <iomanip>
#include <iostream>
#include <vector>
using std::cout;
using std::endl;
using std::fixed;
using std::setprecision;
using std::vector;
int main() {
vector<double> d_vec = {123.231, 2.2343, 0.324, 0.012,
26.9491092019, 11013, 92.001112, 0.000000234};
for (auto &i : d_vec) {
cout << std::setw(10) << std::right << std::setfill(' ') << fixed
<< setprecision(4) << i << endl;
}
cout << endl;
return EXIT_SUCCESS;
}
Resultado:
123.2310
2.2343
0.3240
0.0120
26.9491
11013.0000
92.0011
0.0000
Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.
LinkedIn Facebook