matlabで小数点以下を0.5に四捨五入するにはどうすればよいですか?たとえば、16.625を16.5に丸めたい
質問する
16079 次
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 に答える