忍者ブログ

[PR]

2025年04月25日
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

Kirisute Gomen

2008年12月07日
【浮動小数点数に関して】
精度という単語が出てくる計算では必ず浮動小数点数を使わなければなりません。
固定小数点数でも良いけど、浮動小数点数の方が範囲広いし誤差も少ないやんというのではなく、
浮動小数点数を使わなければダメ、絶対というレベルです。

浮動小数点数には、
倍精度(double、仮数部52bit、有効桁数15桁)と、
単精度(float、仮数部24bit、有効桁数6桁)があります。(四倍精度とかもあるが割愛)

 doubleの仮数部は52bitだから固定小数点数でも52bit保てればdoubleと同等の精度を保てるやん!といった考えもありますが、doubleでどれだけ計算しても15桁の精度を保障できるのは、bit数が大きいからではなく正規化しているからです。また正規化している数のことを浮動小数点数と言います。固定小数点数(というかここで言う固定小数点数の小数点という概念は外から勝手に与えているだけなので、計算自体は実質intと一緒)で調子に乗って下位ビット切ってると小さい数は無視されます。故に固定小数点数では精度が保障されません。というか精度という概念が無いですね。これは出力値が正しいか分からないことを意味します。 固定小数点数の52bit=doubleと同等ではないのです。故に固定小数点数の下位ビット切りは、浮動小数点数のそれとは同等ではありません。

 intは32bitだから232=10桁くらいの精度!という考えもあるかも知れません。32bitフルに使っているならそのくらいの精度でしょう。32bitフルに使っている値で乗算をしたときも、結果の下位ビットを切っても32bit精度です。しかしそれはintにおける32bitフル=正規化していると同等な状態だからです。しかし32bitをフルに使っていない場合、数の大きさが小さいほど正しい数からかけ離れていきます。最悪無視されます。

こういう考え方で合ってるんでしょうかね~??

、、、と言う訳で
これから、大幅な仕様変更を行います

それぞれの用途
固定小数点数
値がそんなに正しくなくて良いもの。最終的な出力を確認するのが人間の目や耳なもの。
音楽やら映像やら。情報落ちが起こらない。

浮動小数点数
科学技術計算。情報落ちが起こる。
大きい値と小さい値を計算したとき、相対的に小さい値が仮数部からアンダーフロー。

wikipediaを見てみると浮動でも誤差の問題がついて回るようでどっちが正しいか分かりませんな。
PR
Comment
No title
ダメ、絶対!!
とか
いじめかっこ悪い!!(前園?)
とか昔はやったよね
No title
そうね。薬物とかいじめとか絶対やっちゃいかんよ~!
  Vodafone絵文字 i-mode絵文字 Ezweb絵文字