0
>> a = 12.5 * 9.45

a =

     1.181250000000000e+02

>> round(a * 100) /100

ans =

     1.181200000000000e+02

丸められた値は、118.12 ではなく 118.13 である必要があります。

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 に答える