Eu tenho uma lista de float
valores e quero imprimi-los cout
com 2 casas decimais.
Por exemplo:
10.900 should be printed as 10.90
1.000 should be printed as 1.00
122.345 should be printed as 122.34
Como posso fazer isso?
( setprecision
parece não ajudar nisso.)
#define FIXED_FLOAT(x) std::fixed <<std::setprecision(2)<<(x)
o que simplifica o uso de:cout<<FIXED_FLOAT(d)
Você estava quase lá, também precisa usar std :: fixed, consulte http://www.cplusplus.com/reference/iostream/manipulators/fixed/
saídas:
fonte
setprecision(n)
aplica-se ao número inteiro, não à parte fracionária. Você precisa usar o formato de ponto fixo para aplicá-lo à parte fracionária:setiosflags(ios::fixed)
fonte
Simplifique a resposta aceita
Exemplo simplificado:
E você obterá saída
Referência:
std::fixed
std::setprecision
fonte
Eu tive um problema com números inteiros enquanto desejava uma formatação consistente.
Uma reescrita para completar:
fonte
Eu tive esse problema semelhante em uma competição de codificação e foi assim que eu lidei com isso. Definir uma precisão de 2 para todos os valores duplos
Primeiro adicionando o cabeçalho para usar setprecision
#include <iomanip>
Em seguida, adicione o seguinte código em nosso principal
Resultado:
Você precisa usar fixo para escrever 5,00, por isso, sua saída não chegará a 5,00.
Um breve link de vídeo de referência que estou adicionando é útil
fonte
Você precisa definir o 'modo flutuante' como fixo.
fonte
Para definir 2 dígitos fixos após o ponto decimal, use-os primeiro:
Em seguida, imprima seus valores duplos.
Isto é um exemplo:
fonte
fonte
com modelos
semelhante também para o científico, com uma opção de largura (útil para colunas)
fonte
Apenas um ponto menor; coloque o seguinte no cabeçalho
usando espaço para nome std;
então
std :: cout << std :: fixo << std :: setprecision (2) << d;
torna-se simplificado para
cout << corrigido << setprecision (2) << d;
fonte
using namespace std;
- entenda por que você está fazendo isso.este é um exemplo usando uma matriz.
fonte