是否有在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。