是否有在C中进行浮点运算的函数,或者我需要编写自己的函数?



我想将实际值四舍五入到小数点后一位,conver =45。 6

最佳答案

如Rob所述,您可能只想将浮点数打印到小数点后1位。在这种情况下,您可以执行以下操作:

#include <stdio.h>
#include <stdlib.h>

int main()
{
  float conver = 45.592346543;
  printf("conver is %0.1f\n",conver);
  return 0;
}

如果要实际舍入存储的值,则要复杂一些。例如,您的小数点后一位表示很少会在浮点数上有确切的模拟。如果您只是想尽可能地靠近,可以使用以下方法:
#include <stdio.h>
#include <stdlib.h>
#include <math.h>

int main()
{
  float conver = 45.592346543;
  printf("conver is %0.1f\n",conver);

  conver = conver*10.0f;
  conver = (conver > (floor(conver)+0.5f)) ? ceil(conver) : floor(conver);
  conver = conver/10.0f;

  //If you're using C99 or better, rather than ANSI C/C89/C90, the following will also work.
  //conver = roundf(conver*10.0f)/10.0f;

  printf("conver is now %f\n",conver);
  return 0;
}

我怀疑第二个示例就是您要查找的内容,但出于完整性考虑,我将其包括在内。如果确实需要内部(而不只是输出)数字表示,请考虑使用fixed-point representation

10-08 11:54