Double:使用实际的小数位数

时间:2013-06-07 10:42:52

标签: c++

我正在创建一个计算器程序,但我不知道如何设置计算答案的小数位精度,以便显示实际的小数位数。 例子: - 如果答案是6,它将显示6,而不是6.0000000

- 如果答案是8.23,它将显示8.23,而不是8.23000000

我如何设置精度?

5 个答案:

答案 0 :(得分:2)

基本上,您可以设置:

std::cout.precision(6); // 6 digits

或您需要的任何价值。或者:

std::cout << std::setprecision(5) << my_double_value << std::endl;

答案 1 :(得分:2)

在C ++中,使用方法精度来设置所需占位符的数量,例如:

 double f = 3.14159;
  std::cout.unsetf ( std::ios::floatfield );                // floatfield not set
  std::cout.precision(5); //will output 5 digits after point
  std::cout << f << '\n';
  std::cout.precision(10); //will output 10 digits after point, like 3.1415900000
  std::cout << f << '\n';
  std::cout.setf( std::ios::fixed, std:: ios::floatfield ); // floatfield set to fixed
  std::cout << f << '\n';

要删除任何尾随零,您可以使用

std::cout.precision(0);

答案 2 :(得分:1)

iostream提供了setprecision功能:

  double f =3.14159;
  std::cout << std::setprecision(5) << f << '\n';
  std::cout << std::setprecision(9) << f << '\n';
  std::cout << std::fixed;
  std::cout << std::setprecision(5) << f << '\n';
  std::cout << std::setprecision(9) << f << '\n'

输出将是:

3.1416
3.14159
3.14159
3.141590000

答案 3 :(得分:1)

这将有效:

printf("%g",value);

答案 4 :(得分:1)

&#34;&#34;实际的小数位数&#34;。双精度具有许多二进制位置,但这些位置不能可靠地映射到多个小数位。一个简单的例子是1.0/10,0,它应该是0.1,但实际上是一个非常接近0.1的数字;因此,您为这些总和显示的小数位数不是双精度本身的质量,而是您想要显示的小数位数。

在其他答案中讨论了如何截断所需的数字。

相关问题