如何在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 回答