我正在尝试使用返回值四舍五入到小数点后第四位的double Variance()
函数。
例如,如果结果为5.2992124
,则返回5.2992
,如果结果为8.9914
,则返回8.991382
。
我知道有cout << setprecision(~)
,printf("%.4d, ~")
,但是我不确定如何在我的情况下利用它。
谢谢。
答案 0 :(得分:1)
这取决于您需要什么。要求方差值四舍五入到一些有效数字似乎很不寻常。无论如何,您都可以按如下所示舍入double
:
double rounded = 1e-4 * std::round(1e4 * value);
乘以10000,四舍五入为整数,然后除以10000。
答案 1 :(得分:1)
一种简单的方法是首先将值转换为整数。 您可以使用标头cmath中定义的c ++的pow()函数:
pow(base, exponent)
在您的示例中:5.2992124。
(unsigned int)5.2992124 * pow(10,4)。
这将产生值52992.124,该值在截断后变为52992。 然后,您可以再次使用pow(10,4)除以将其转换为双精度,然后将其转换为:5.2992。