在算法竞赛中,有时会出现一些问题,要求解决方案保留一定数量的小数位,例如(保留2个小数位时)3
的输出为3.00
, 3.1415926
是3.14
。
但是,std::setprecision
不能满足要求,因为它可以控制有效数字的数量,而不是小数位数。例如,以下代码
std::cout << set::precision(5) << 123.456;
实际产生输出
123.46
而不是预期的
123.45600
真正需要的是与以下printf
完全相同的输出:
printf("%.5lf", 123.456);
那么在C ++中如何保留一定数量的小数位而不是有效数字?在我看来,printf
可能不是一个好主意,因为我个人认为printf
仅出于兼容性原因而存在于C ++中。