0
>> 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

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

4

2 回答 2

3

您可以尝试类似John D'Errico 的 hpf class

这将给出您期望的结果

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


F = hpf('9.45')
F =
9.45
于 2012-07-09T20:40:00.077 回答
0

听起来您的某些设置会影响您的输出精度。看起来您当前的设置需要 15 个小数位(可能longG)?,并且使用 MATLAB 浮点数,您将无法获得 100% 的精度。

您可以更改显示输出的格式,但无论如何精度都将成为该级别的问题。 相关文件。

于 2012-07-09T20:02:31.803 回答