c - 四舍五入后打印 float

标签 c

我有一个舍入函数,

float myround(float x, int places)
{
   float const shift = powf(10.0f, places);
   x *= shift;
   x = floorf(x + 0.5f);
   x /= shift;

   return x;
}

当我尝试将数字四舍五入到小数点后 4 位,然后打印数字时

printf("%f ", x); 

我得到的数字没有四舍五入。如果我打印它

printf("%.4f ", x);

我将数字四舍五入到 4 位。第一个 printf 是否应该不将数字打印到小数点后 4 位,因为我已经四舍五入了数字?

谢谢。

最佳答案

你不能舍入 float ,你只能将它们打印到特定的精度。所有 float 始终是“未四舍五入”的,尽管您显然可以更改该值以更接近四舍五入的数量。

关于c - 四舍五入后打印 float ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16659021/

相关文章:

C getchar() 不等待输入/条件循环不 int

c - 从自定义系统调用生成段错误

C初学者: How to copy the arguments from *argv[] to an array of strings using a while loop?

计算给定文本文件的字数

c - 如何使用位域查找特定指令? (位比较)

c - 在 C 中扫描值直到获得有效字符

c - C中的无限while循环不等待再次扫描数据

c - AUTH PLAIN中如何使用用户名和密码?

c - int* vector 仅接受第一个给定值

c - 如何指向预分配内存上的 2D/3D 空间