Matlab Round Down



我正在使用matlab中的round函数来四舍五入变量并获得值的顶部和底部整数。我使用的代码如下:

X = 1.8;
Yminusinf = round(X,TieBreaker="fromzero")
%round down
Yplusinf = round(X,TieBreaker="tozero")
%round up

问题是我得到的两个答案都是2。我直接从matlab官方网站复制了这些方程,所以我假设我用错了?有更好的方法来做这件事吗?

是的,还有其他几种方法可以实现这一点。我将向您展示使用fix()函数的一种方法:

function [intLow , intHigh]  = boundingIntegers(num)
intLow  = fix(num) ;
intHigh = intLow + 1*sign(intLow) ;

fix()向零四舍五入,而不考虑下一个数字的值(因此1.11.9都将四舍五入为1

一旦有了较低的值,下一个较高的整数只需加上1即可得到。

在代码中使用了sign(intLow)的乘法,因此这也适用于负数。


您还可以使用以下函数找到这两个边界整数:

  • ceil -趋于正无穷,和/或
  • 地板-朝向负无穷

原理是一样的,只是调整了处理负数的方法,如果它们是你可能输入的一部分。