我已经编写了一个C程序(这是我项目的一部分),将浮点值舍入到用户指定的给定精度。函数是这样的

     float round_offf (float num, int precision)

我在这个程序中所做的是将浮点数转换成一个字符串,然后对其进行处理。
但是有没有一种方法可以保持这个数字本身是浮动的并实现相同的功能呢。
例如num=4.445 prec=1结果=4.4

最佳答案

当然有。非常简单:

#include <math.h>

float custom_round(float num, int prec)
{
    int trunc = round(num * pow(10, prec));
    return (float)trunc / pow(10, prec);
}

编辑:在我看来,你想要这个是因为你认为在格式字符串中不能有动态精度。显然,你可以:
int precision = 3;
double pie = 3.14159265358979323648; // I'm hungry, I need a double pie
printf("Pi equals %.*lf\n", precision, pie);

这将打印3.142

07-24 09:45
查看更多