四舍五入到带有数字数组的最近偶数

时间:2019-06-08 13:31:01

标签: octave

我的函数并四舍五入到最接近的偶数

function y = rndeven(x)
    if x<=1
      y=2;
    else  
      y = 2*floor(x);
    end

endfunction

当我运行它时,我得到:

cc=[0:3]'
both=[cc,rndeven(cc)]

0                     0
1                     2
2                     4
3                     6

我想要得到的结果:

0                     2
1                     2
2                     2
3                     4

2 个答案:

答案 0 :(得分:3)

您可以使用模2来查找数字是否为偶数。如果不是,它将返回1,因此只需在此数字上加1即可找到最接近(较大)的偶数:

function y = rndeven(x)
    x = floor(x);
    x(x <= 1) = 2;
    y = mod(x,2)+x;
end

这适用于任何数组,元素的顺序无关紧要。

答案 1 :(得分:-1)

如果您不想使用mod函数,也可以检查它是否可以被2整除。伪代码将是这样的:

while(x%2!= 0)x = x + 1

返回x