是否有直接函数来设置数字的小数。例如,我得到3.14341
我的参数是2
,所以我得到3.14
。有一个函数setprecision
但它只打印结果。另外,我制作了这样的算法:
std::string fixPrecision(std::string const& value, int digits)
{
std::string num = value;
float temp = std::stof(num);
float fractpart, intpart;
fractpart = modf(temp, &intpart);
int a = (int)(fractpart * pow(10,digits));
double last = intpart + a*(pow(0.1 , digits));
return std::to_string(last);
}
效果很好。我得到了我想要的但我必须将其转换为字符串,因此结果是123.120000
而不是123.12
。
我可以肯定在这里使用一些帮助。提前谢谢。
编辑:这不是一个重复的问题,因为我的函数需要取整数并返回字符串格式的数字。再次感谢。
答案 0 :(得分:0)
std::string fixPrecision(std::string const& value, int digits)
{
auto pos = value.find(".");
if(pos != std::string::npos)
return value.substr(0, pos+digits+1);
return value;
}
答案 1 :(得分:-1)
不完全正确,但您可以使用 std :: setprecision
设置精度定义一个方法:
void printWithPrecision(const double value, unsigned decimalPlaces)
{
std::cout << "A Double with " << decimalPlaces <<" decimal places: "<<std::setprecision(decimalPlaces) << value << std::endl;
}
并称之为:
double d = 7987.12354689765416;
for (auto x = 0; x<10; x++)
{
printWithPrecision(d, x);
}
别忘了包含输入输出操纵器:
#include <iomanip>