0

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

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

等等

我将如何设置精度?

4

5 回答 5

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);
于 2013-06-07T10:48:26.617 回答
2

基本上,您可以设置:

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

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

std::cout << std::setprecision(5) << my_double_value << std::endl;
于 2013-06-07T10:46:01.953 回答
1

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

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

于 2013-06-07T10:56:28.427 回答
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
于 2013-06-07T10:47:51.773 回答
1

这将起作用:

printf("%g",value);
于 2013-06-07T10:52:42.687 回答