我正在使用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.1
和1.9
都将四舍五入为1
。
一旦有了较低的值,下一个较高的整数只需加上1
即可得到。
在代码中使用了sign(intLow)
的乘法,因此这也适用于负数。
您还可以使用以下函数找到这两个边界整数:
- ceil -趋于正无穷,和/或
- 地板-朝向负无穷
原理是一样的,只是调整了处理负数的方法,如果它们是你可能输入的一部分。