根据参数设置十进制数字
set decimal numbers according to parameter
是否有直接函数来设置数字的小数。例如,我有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>
相关文章:
- 如何计算整数的十进制数字?
- Unicode Chars显示为十进制数字而不是符号,我该如何修复
- 根据参数设置十进制数字
- 将二进制号转换为十进制数字的代码
- 使用动态比特斯转换十进制数字
- 此代码中 * 1233 >> 12 计算十进制数字背后的数学原理是什么
- 仅使用char将八分音号码转换为十进制数字
- 将十进制数字截断为最接近的4个小数和断言
- 将数字设置在小数点后的浮子中
- 打印长双变量的所有十进制数字
- 十进制数字的区域设置感知编辑控件子类化(格式[sign][xxx..][decimal separator][yy.])
- 将双精度转换为精度超过 5 位十进制数字的字符串
- 将双十进制数字转换为HEX字符串
- 如何确定浮点数中的最后一个非零十进制数字
- 为什么在传递给 mktime 时,我应该将月份数字设置为实际月份
- 函数本身将数字设置为零
- 编写一个宏is_digit,如果其参数是十进制数字,则返回true
- 以 32 个十进制数字分析浮点数/双精度
- 如何计算出大双精度中有多少个十进制数字
- 8 字节如何容纳 302 个十进制数字?(欧拉挑战16)