1

1 / 6、2 / 3、1/6の3つの値を持つベクトルを作成したかったのです。明らかに、私はMatlabがこれらの有理数を実数に変換する必要がありますが、それが利用可能な精度を最大化することを期待していました。

値をdoubleとして保存していますが、-として保存しています。

b =

    0.1667    0.6667    0.1667

これは精度の大幅な低下です。doubleは、数値の小数部分の52ビットの精度を意味するはずではありませんが、なぜ数値がそれほど厳しく切り捨てられるのでしょうか。

4

2 に答える 2

7

数字はそのようにのみ表示されます。内部的には、完全な精度を使用しています。このコマンドを使用して、format表示精度を変更できます。例えば:

長いフォーマット

それらを次のように表示します:

0.166666666666667 0.666666666666667 0.166666666666667

したがって、答えは簡単です。精度が低下することはありません。これは表示の問題にすぎません。

数値を表示するために使用できる他の形式に関するドキュメントを読むことができます。

于 2012-11-10T17:10:38.393 に答える
0

Double変数に1/2または1/4または1/6として値を格納することはできません...これらはシステムの背後に小数として格納されます。これらの値を保存する場合は、機能する文字列として保存してみてください。

これらの文字列を使用して数学的な計算を行う場合は、値を数値に変換して続行します。

于 2012-11-10T17:13:25.933 に答える