MatLab - 9.45表示和圆形

时间:2012-07-09 19:57:47

标签: matlab rounding

>> a = 12.5 * 9.45

a =

     1.181250000000000e+02

>> round(a * 100) /100

ans =

     1.181200000000000e+02

舍入值应为118.13,而不是118.12。

如果在MatLab命令行中键入9.45,则无法表示:

>> 9.45

ans =

   9.449999999999999

如果我将数字格式设置为short,则最终结果是相同的。

>> a = 12.5 * 9.45

a =

  118.1250

>> round(a * 100) / 100

ans =

  118.1200

有人可以解释一下吗?任何解决方法?

2 个答案:

答案 0 :(得分:3)

您可以尝试类似John D'Errico's hpf class的内容。

这将给出您期望的结果

round(hpf('12.5') * hpf('9.45') * 100)/100
ans =
118.13


F = hpf('9.45')
F =
9.45

答案 1 :(得分:0)

听起来你有一些设置会弄乱你的输出精度。看起来您当前的设置需要15个小数位(可能是longG)?,对于MATLABs浮点数,您将无法获得100%的精度。

您可以更改显示输出的格式,但无论如何精度都将成为该级别的问题。 The relevant documentation.