>> 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
有人可以解释一下吗?任何解决方法?
答案 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.