我正在寻找可以在 C 中四舍五入浮点值的函数,假设数字 0.1153846 应该四舍五入到小数点 6,产生输出为 0.115385
虽然目标 c 中有类似 lroundf() 的函数,但不确定如何在我的上下文中使用它。
我在 gcc 编译器上,任何帮助将不胜感激。
我正在寻找可以在 C 中四舍五入浮点值的函数,假设数字 0.1153846 应该四舍五入到小数点 6,产生输出为 0.115385
虽然目标 c 中有类似 lroundf() 的函数,但不确定如何在我的上下文中使用它。
我在 gcc 编译器上,任何帮助将不胜感激。
浮点数是十进制类型是很不寻常的,这意味着无论你做什么,舍入的结果通常不会在浮点数中表示,并且会再次调整以匹配可表示的数字。
如果出于计算目的确实需要这种舍入,则浮点类型可能不是要使用的正确类型。
如果只是出于展示目的,请使用printf
家庭给您的控件。
float f = 0.1153846;
f = floor(f * 1000000) / 1000000;
这应该有效。
你可能想做
double x = 0.1153846;
double rx = round (x * 1e6) * 1.e-6;
但是,请记住 IEEE 754 浮点是二进制的,尾数为 2。
int precision = 3;
float num = 1.63322;
printf("%.*f",precision,num);