根据参数设置十进制数字

set decimal numbers according to parameter

本文关键字:十进制数字 设置 参数      更新时间:2023-10-16

是否有直接函数来设置数字的小数。例如,我有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

我可以在这里使用一些帮助。预先感谢。

编辑:这不是一个重复的问题,因为我的功能需要使用字符串格式返回整数并返回数字。再次感谢。

我的傻瓜。答案就像这样简单。我不必要地做了很多事情...

 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;
 }

不完全是完全,但是您可以使用 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>