c++ - 如何在C++中将变量四舍五入到小数点后n位

标签 c++ floating-point-precision

我有一些 float 变量会产生像 1.23456789 这样的值。我想四舍五入到小数点后 4 位。

setprecision 函数只舍入输出,但我想更改变量本身的值。

所以我正在寻找类似的东西

x=roundoff(x,n)

四舍五入会将 x 舍入到 n 位小数。

最佳答案

为什么不是这个?

  float val = 1.23456789

  float rounded_down = floorf(val * 1000) / 1000;   /* 1.2345 */

编辑:

正如评论中指出的那样,请记住这是一个近似值,但在许多情况下它可能是可以接受的。 另外,您可能希望四舍五入到最接近的值或按如下方式四舍五入:

  float val = 1.23456789

  float near = roundf(val * 1000) / 1000;   /* nearest */
  float up = ceilf(val*1000) / 1000; /* up*/

关于c++ - 如何在C++中将变量四舍五入到小数点后n位,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29447630/

相关文章:

Javascript 阻止自动舍入

c++ - 尝试返回 boolean 值时程序崩溃

c++ - 在 OpenCL 中读取像素 RGB 值的问题

PHP 可靠计算立方根

c++ - 为什么我的浮点值会失去精度并丢掉小数位?下面的示例代码

python - 如果元素等于某个容差,我可以使用 numpy 快速设置 float 差异吗

c++ - 如何快速识别头文件中的函数?

c++ - 从 std::set 复制到 std::deque- 内存问题

c++ - 模板和继承问题!

java - 在 Java 中,什么时候 float 等于零?