在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); }