MATLAB round函数取上下整数值异常问题及优化方法咨询
问题分析与解决方案
你用round函数的TieBreaker参数来做上下取整是用错了——这个参数只处理数值恰好处于两个整数中间的情况(比如1.5、2.5这种“平局”值),对1.8这种非中间值,不管选哪种TieBreaker,round都会直接取最近的整数,所以两个结果都是2很正常。
要实现真正的上下取整,直接用MATLAB专门的取整函数就行:
正确代码示例
X = 1.8; % 向下取整(取小于等于X的最大整数) Y_floor = floor(X); % 结果为1 % 向上取整(取大于等于X的最小整数) Y_ceil = ceil(X); % 结果为2 % 额外补充:向零取整(直接截断小数部分) Y_fix = fix(X); % 结果为1,对负数的话fix(-1.8)=-1
各函数说明
floor():总是向负无穷方向取整,比如floor(-1.8)会得到-2ceil():总是向正无穷方向取整,比如ceil(-1.8)会得到-1fix():向零的方向取整,正数截断小数,负数也截断小数(去掉负号后截断再加回负号)
内容的提问来源于stack exchange,提问作者Alex Band
相关产品推荐
相关产品推荐

