8

matlabで小数点以下を0.5に四捨五入するにはどうすればよいですか?たとえば、16.625を16.5に丸めたい

4

3 に答える 3

17

これは同じロジックであり、C#についても同じ質問が行われました。

result = round(value*2)/2;

そして、一般化するために、aardvarkkの提案によれば、最も近い精度に丸めたい場合acc、例えばacc = 0.5

acc = 0.5;
result = round(value/acc)*acc;
于 2013-03-26T14:43:06.487 に答える
3

2で乗算-ラウンド-2で除算するルートを実行すると、いくつかの(非常に小さな)数値エラーが発生する可能性があります。modこれを回避するために使用してそれを行うことができます:

x = 16.625; 
dist = mod(x, 0.5); 
floorVal = x - dist; 
newVal = floorVal; 
if dist >= 0.25, newVal = newVal + 0.5; end

より少ないステップでそれを行うことができますが、ここでは、各ステップが何をするかを確認できるように分割しました。

于 2013-03-26T14:42:25.087 に答える
1
a=16.625;
b=floor(a);
if abs(a-b-0.5) <= 0.25
  a=b+.5;
else
  if a-b-0.5 < 0
    a=b;
  else
    a=b+1;
  end
end
于 2013-03-26T14:47:23.973 に答える