Matlab舍入

huus2vyu  于 2023-04-06  发布在  Matlab
关注(0)|答案(1)|浏览(146)

我使用matlab中的round函数对一个变量进行舍入,并获得一个值的顶部和底部整数。我使用的代码如下:

X = 1.8;

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

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

p4rjhz4m

p4rjhz4m1#

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

function [intLow , intHigh]  = boundingIntegers(num)

intLow  = fix(num) ;
intHigh = intLow + 1*sign(intLow) ;

fix()将 * 四舍五入为零 *,而不管下一个数字值是什么(因此1.11.9都将四舍五入为1
有了这个 * 较低 * 的值后,下一个 * 较高 * 的整数只需将1相加即可获得。
在代码中,使用乘以sign(intLow),因此这也适用于负数。
你也可以通过使用以下函数找到这两个边界整数:

  • ceil-向正无穷舍入,和/或
  • floor-向负无穷舍入

原则是一样的,只要调整体操来处理负数,如果它们是你可能输入的一部分。

相关问题