我使用matlab中的round函数对一个变量进行舍入,并获得一个值的顶部和底部整数。我使用的代码如下:
X = 1.8; Yminusinf = round(X,TieBreaker="fromzero") %round down Yplusinf = round(X,TieBreaker="tozero") %round up
问题是我得到的两个答案的结果都是2。我直接从matlab官方网站复制了这些方程,所以我假设我用错了它们?有更好的方法吗?
p4rjhz4m1#
是的,还有其他几种方法可以实现这一点。我将向您展示一种使用fix()函数的方法:
fix()
function [intLow , intHigh] = boundingIntegers(num) intLow = fix(num) ; intHigh = intLow + 1*sign(intLow) ;
fix()将 * 四舍五入为零 *,而不管下一个数字值是什么(因此1.1和1.9都将四舍五入为1。有了这个 * 较低 * 的值后,下一个 * 较高 * 的整数只需将1相加即可获得。在代码中,使用乘以sign(intLow),因此这也适用于负数。你也可以通过使用以下函数找到这两个边界整数:
1.1
1.9
1
sign(intLow)
原则是一样的,只要调整体操来处理负数,如果它们是你可能输入的一部分。
1条答案
按热度按时间p4rjhz4m1#
是的,还有其他几种方法可以实现这一点。我将向您展示一种使用
fix()
函数的方法:fix()
将 * 四舍五入为零 *,而不管下一个数字值是什么(因此1.1
和1.9
都将四舍五入为1
。有了这个 * 较低 * 的值后,下一个 * 较高 * 的整数只需将
1
相加即可获得。在代码中,使用乘以
sign(intLow)
,因此这也适用于负数。你也可以通过使用以下函数找到这两个边界整数:
原则是一样的,只要调整体操来处理负数,如果它们是你可能输入的一部分。