我想以这样的格式打印浮点数。
01234.56
我使用以下函数将浮点数舍入为n位数。
double round(double val, int precision)
{
std::stringstream s;
s << std::setprecision(precision) << std::setiosflags(std::ios_base::fixed) << val;
s >> val;
return val;
}
以下行输出任意数字,前导零到固定长度。
setfill ('0') << setw(5) << number
但是当我尝试将两者结合起来时,我最终会得到不一致的长度,如下例所示:
8.2 => 008.2
4.57 => 04.56
我想要的是这样的输出:
8.2 => 08.20
4.57 => 04.57
你能告诉我一个像string myround (double d, intpart n, floatpart f)
这样的函数返回:
myround (1234.5, 5, 2) => 01234.50
myround (1234.569, 5, 2) => 01234.57
我想象它之前已被问过,但我找不到使用内部搜索引擎。
答案 0 :(得分:2)
fixed操纵者会做我认为的伎俩,下面我的例子输出你想要的东西:
#include <iostream>
#include <iomanip>
using namespace std;
int main(void) {
cout << setprecision(2) << setfill ('0') << setw(5) << fixed << 8.2 << endl;
cout << setprecision(2) << setfill ('0') << setw(5) << fixed << 4.57 << endl;
}
只需将它放入你的stringstream就可以了。但是,当字符串再次转换为double值时,固定信息将丢失。我认为使用字符串方法对float进行舍入是个不错的主意。