天花板到最近的50

时间:2010-10-02 02:02:01

标签: matlab rounding

我可以将A的元素四舍五入到大于或等于A的最接近的整数

ceil(A)

但是如果我想把它四舍五入到大约等于A的最接近的50呢?

例如,给定以下A数组,

A=[24, 35, 78, 101, 199];

子程序应返回以下内容

B=Subroutine(A)=[50, 50, 100, 150, 200];

2 个答案:

答案 0 :(得分:15)

你可以除以50,取ceil(),然后再乘以50:

  octave:1> A=[24, 35, 78, 101, 199];
  octave:2> ceil(A)
  ans =

    24    35    78   101   199

  octave:3> 50*(ceil(A/50.))
  ans =

    50    50   100   150   200

答案 1 :(得分:8)

一种简单的方法是只添加每个数字的补码模50:

octave> A = [24, 35, 78, 101, 199] 

octave> mod(-A, 50)       # Complement (mod 50)
ans =

   26   15   22   49    1

octave> A + mod(-A, 50)   # Sum to "next higher" zero (mod 50)
ans =

    50    50   100   150   200

octave> A - mod(A, 50)    # Can also sum to "next lower" zero (mod 50)
ans =

     0     0    50   100   150

(注意,这仅取决于整数运算,这避免了由浮点舍入引起的错误。)