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

时间:2017-07-20 02:43:50

标签: matlab ceil

是否存在类似于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 个答案:

答案 0 :(得分:4)

如果您想要同等对待负值和正值,1.1变为2-1.1变为1,则the answer from informaton使用floor是正确的:

out = floor(x)+1;

如果你想让正值成为下一个最正整数,但负值成为下一个整数,那么你可以使用fix和{ {3}}喜欢这样:

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

答案 1 :(得分:3)

对于正数x:

floor(x)+1

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

ceil(x)-1