我可以将A
的元素四舍五入到大于或等于A
的最接近的整数
ceil(A)
但是如果我想把它四舍五入到大约等于A
的最接近的50呢?
例如,给定以下A
数组,
A=[24, 35, 78, 101, 199];
子程序应返回以下内容
B=Subroutine(A)=[50, 50, 100, 150, 200];
答案 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
(注意,这仅取决于整数运算,这避免了由浮点舍入引起的错误。)