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 回答