我编写了一个 C 程序(它是我项目的一部分)来将浮点值四舍五入到用户指定的给定精度。功能是这样的
float round_offf (float num, int precision)
我在这个程序中所做的是将浮点数转换为字符串,然后对其进行处理。
但是有没有办法让数字本身保持浮动并实现相同。
例如。num = 4.445 prec = 1 结果 = 4.4
我编写了一个 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
。
是的:
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);
}