首页 文章

下一个大于但不等于输入的整数

提问于
浏览
2

是否存在类似于ceil的(Matlab)函数来查找大于输入但不等于输入的下一个整数?

例子:

1.1 --> 2
1.9 --> 2
2.0 --> 3    (note that ceil(2) == 2)
2.1 --> 3

我尝试使用 ceil(x+eps) ,但这仅适用于小数字:

>> ceil((-4:4)+eps)

ans =

-4    -3    -1     0     1     2     2     3     4

还有, floor 的任何等价物?

2 回答

  • 3

    如果你想同样对待负值和正值,使 1.1 变为 2 并且 -1.1 变为 1 ,那么the answer from informaton使用floor是正确的:

    out = floor(x)+1;
    

    如果你想让正值成为下一个最正整数,但负值成为下一个最负的整数,那么你可以像这样使用fixsign

    out = fix(x)+sign(x);
    

    例如:

    >> x = [-2.1 -2.0 -1.9 -1.1 0 1.1 1.9 2.0 2.1]
    
    x =
       -2.1000   -2.0000   -1.9000   -1.1000         0    1.1000    1.9000    2.0000    2.1000
    
    >> out = fix(x)+sign(x)
    
    out =
        -3    -3    -2    -2     0     2     2     3     3
    
  • 4

    对于正数x:

    floor(x)+1

    第二个问题在没有示例的情况下有点含糊不清,但这可能是您正在寻找的:

    ceil(x)-1

相关问题