[英]How do you use setprecision() when declaring a double variable in C++?
因此,我正在尝试了解有关 C++ 的更多信息,并且正在通过为二次方程制作计算器 class 来练习。 这是下面的代码。
#include "QuadraticEq.h"
string QuadraticEq::CalculateQuadEq(double a, double b, double c)
{
double sqrtVar = sqrt(pow(b, 2) - (4 * a * c));
double eqPlus = (-b + sqrtVar)/(2 * a);
double eqMinus = (-b - sqrtVar) / (2 * a);
return "Your answers are " + to_string(eqPlus) + " and " + to_string(eqMinus);
}
我正在尝试使双变量 eqPlus 和 eqMinus 只有两个小数点。 我见过人们说要使用 setprecision() 但我只见过人们在 cout 语句中使用 function 并且在 class 中没有,因为我没有打印出一个字符串我正在返回一个。 那么我会在这里做什么呢? 我记得在学习一些 setiosflags() 方法之前,我能用它做些什么吗?
您可以使用stringstream
而不是通常的std::cout
和setprecision()
。
#include <iostream>
#include <string>
#include <sstream>
#include <iomanip>
std::string adjustDP(double value, int decimalPlaces) {
// change the number of decimal places in a number
std::stringstream result;
result << std::setprecision(decimalPlaces) << std::fixed << value;
return result.str();
}
int main() {
std::cout << adjustDP(2.25, 1) << std::endl; //2.2
std::cout << adjustDP(0.75, 1) << std::endl; //0.8
std::cout << adjustDP(2.25213, 2) << std::endl; //2.25
std::cout << adjustDP(2.25, 0) << std::endl; //2
}
但是,从 output 中可以看出,当value
不能精确地表示为浮点二进制数时,这种方法会引入一些舍入误差。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.