0

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

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

我在 gcc 编译器上,任何帮助将不胜感激。

4

4 回答 4

1

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

如果出于计算目的确实需要这种舍入,则浮点类型可能不是要使用的正确类型。

如果只是出于展示目的,请使用printf家庭给您的控件。

于 2012-09-14T09:49:06.353 回答
1
float f = 0.1153846;
f = floor(f * 1000000) / 1000000;

这应该有效。

于 2012-09-14T09:32:47.450 回答
1

你可能想做

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

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

于 2012-09-14T09:33:09.493 回答
1
int precision = 3;
float num = 1.63322;
printf("%.*f",precision,num);
于 2015-08-21T18:37:26.680 回答