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