名前 題名 ▼ Mr.XRAYさん > 修正というか,かなり文章を変更してしまいました. > コードも一部変更しています. > 結果の図に変更はありません. > > 今回の例は,Extended 型というのがミソでした. > FormatFloat 関数では,桁数を大きくしても,実際の内部の値が取得できませんでした. > Double 型であれば,計算結果を見ること出来て,説明が簡単だったのですが... > > > いろいろテストしましたが,数学的には正しくなくても,数値計算の結果としては > 当然の結果と言えます. > 今回のテストは,非常に単純な計算でしたが,実際の実務での計算はもっと計算式も > 多く,複雑であると思われます.その時,結果として取得した値が,数学的に正しい > かを把握して検証するのは,一般的には困難です. > 今回のように,数学的な計算結果との照合というのは無理があるかも知れません. > そういうことを研究している研究者もいますが,我々の目的ではありません. > > コンピュータを使用した計算,特に実数の使用した計算では,常に誤差が伴うことを > 認識する必要があると思われます. > 基本的に,数値計算では,数学的な計算と一致する結果を計算するというのは, > 期待できない場合があります.今回の計算のサンプルでも,基本的な解決策は > ありません. > > [890_計算誤差 ( 数値計算の誤差 ) と多倍長演算] > http://mrxray.on.coocan.jp/Delphi/plSamples/890_CalcError.htm > > の記事にあるように,確実に誤差のない計算を希望するのであれば,BCD 演算 > ということになります.また,Currency 型 (固定小数点形式) を使用すれば, > 小数点 4 桁までは正確な演算が可能です. GIF,JPEG,PNG画像ファイル及びLZH,ZIPファイルをアップロードできます.600 x 1200 ピクセルを超える画像は縮小表示されます(画像クリックで拡大表示). (上限122000(120k)バイト) 削除キー Link