如何在C中舍入Float值

时间:2012-09-14 09:23:31

标签: c

我正在寻找可以在C中舍入浮点值的函数,假设数字0.1153846应该四舍五入到6位小数生成输出为0.115385

虽然目标c中有函数像lroundf()但不确定如何在我的上下文中使用它。

我正在使用gcc编译器,我们非常感谢任何帮助。

4 个答案:

答案 0 :(得分:1)

float f = 0.1153846;
f = floor(f * 1000000) / 1000000;

这应该有效。

答案 1 :(得分:1)

您可能想要

  double x = 0.1153846;
  double rx = round (x * 1e6) * 1.e-6;

但请记住,IEEE 754浮点数是二进制的,基数为2的尾数。

答案 2 :(得分:1)

浮点数为十进制类型是很不寻常的,这意味着无论你做什么,舍入的结果通常都会在浮点数中无法表示,并且会再次调整以匹配可表示的号。

如果计算目的确实需要这样的舍入,浮点类型可能不是正确的类型。

如果仅用于显示目的,请使用printf系列给您的控件。

答案 3 :(得分:1)

int precision = 3;
float num = 1.63322;
printf("%.*f",precision,num);