我可以将元素舍入A
到大于或等于的最接近的整数A
ceil(A)
Run Code Online (Sandbox Code Playgroud)
但是,如果我想将它舍入到最接近的50大于或等于A
?
例如,给定以下A
数组,
A=[24, 35, 78, 101, 199];
Run Code Online (Sandbox Code Playgroud)
子程序应返回以下内容
B=Subroutine(A)=[50, 50, 100, 150, 200];
Run Code Online (Sandbox Code Playgroud)
Jon*_*rsi 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
Run Code Online (Sandbox Code Playgroud)
一个简单的方法是只添加每个数字的补码模数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
Run Code Online (Sandbox Code Playgroud)
(注意,这仅取决于整数运算,这避免了由于浮点舍入引起的错误.)
归档时间: |
|
查看次数: |
11488 次 |
最近记录: |