正确使用std :: cout.precision() - 不打印尾随零

mah*_*ood 21 c++ floating-point-precision

我看到很多关于浮点数的精度数的问题,但具体来说我想知道为什么这个代码

#include <iostream>
#include <stdlib.h>
int main()
{
  int a = 5;
  int b = 10;
  std::cout.precision(4);
  std::cout << (float)a/(float)b << "\n";
  return 0;
}
Run Code Online (Sandbox Code Playgroud)

显示0.5?我希望看到0.5000.是因为原始整数数据类型?

Nem*_*ric 24

#include <iostream>
#include <stdlib.h>
#include <iomanip>
int main()
{
  int a = 5;
  int b = 10;
  std::cout << std::fixed;
  std::cout << std::setprecision(4);
  std::cout << (float)a/(float)b << "\n";
  return 0;
}
Run Code Online (Sandbox Code Playgroud)

您需要将std::fixed操纵器传递给以cout显示尾随零.


sta*_*ust 6

std::cout.precision(4);告诉要使用的最大位数而不是最小值。这意味着,例如,如果您使用

precision 4 on 1.23456 you get 1.235  
precision 5 on 1.23456 you get 1.2346
Run Code Online (Sandbox Code Playgroud)

如果您想始终获取n数字,则必须使用std::fixed.