假设我有一个浮动.我想将它四舍五入到一定数量的有效数字.
在我的情况下,n = 6.
所以说浮动是f = 1.23456999;
round(f,6)将给出1.23457
f = 123456.0001将给出123456
谁知道这样的例行公事?
解决方法
将数字乘以合适的比例因子,将所有有效数字移动到小数点的左侧.然后围绕并最终反转操作:
#include <math.h> double round_to_digits(double value,int digits) { if (value == 0.0) // otherwise it will return 'nan' due to the log10() of zero return 0.0; double factor = pow(10.0,digits - ceil(log10(fabs(value)))); return round(value * factor) / factor; }
但正如@PascalCuoq指出的那样:舍入值可能无法准确表示为浮点值.