我正在创建一个计算器程序,但我不知道如何设置计算答案的小数位精度,以便显示实际的小数位数。示例:-如果答案是 6,它将显示 6,而不是 6.0000000
- 如果答案是 8.23,它将显示 8.23,而不是 8.23000000
等等
我将如何设置精度?
我正在创建一个计算器程序,但我不知道如何设置计算答案的小数位精度,以便显示实际的小数位数。示例:-如果答案是 6,它将显示 6,而不是 6.0000000
- 如果答案是 8.23,它将显示 8.23,而不是 8.23000000
等等
我将如何设置精度?
在 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);
基本上,您可以设置:
std::cout.precision(6); // 6 digits
或您需要的任何值。或者:
std::cout << std::setprecision(5) << my_double_value << std::endl;
没有“实际的小数位数”。双精度有许多二进制位,但这些不能可靠地映射到许多小数位。一个简单的例子是1.0/10,0
它应该是 0.1,但实际上是一个非常接近 0.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
这将起作用:
printf("%g",value);