在C中手动实现舍入function

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

float round_offf (float num, int precision) 

我在这个程序中所做的是将浮点数转换为字符串然后进行处理。

但有没有办法将数字保持为浮动本身并实现相同的。

例如。 num = 4.445 prec = 1 result = 4.4

当然有。 非常简单:

 #include  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

是:

 float round_offf(float num, int precision) { int result; int power; power = pow(10, precision + 1); result = num * power; if ((result % 10) > 5) result += 10; result /= 10; return ((float)result / (float)power); }