名前 題名 ▼ takiさん > ▼ Mr.XRAYさん > > > 確実に誤差のない計算を希望するのであれば,BCD 演算 > > ということになります.また,Currency 型 (固定小数点形式) を使用すれば, > > 小数点 4 桁までは正確な演算が可能です. > > マスター お疲れ様です。 > > え〜っと、通常の実数の演算は2進数で行われるので誤差が出るのですね。 > > 例えば、a := 10; としても、実際には 9.9999999…がセットされているかも…ですね。 > 32Bitであろうと64BitであろうとDouble型であろうとExtended型であろうと > 小数点以下の.999…の桁数が増えるだけということでしょうか。 > > でも、FloatToStrは「9.999…」と文字列にされると困るので、こそっと有効桁数で > 丸め処理をして、「10」と表示しているのですね。なるほど。 > > それと、学校では四捨五入は4は切り捨てて、5は切り上げるとならったのですが、 > 銀行で使われている四捨五入は実は五捨五入で結果が常に偶数?になるように > なっているのですね。 > > 例えば小数点1位で丸める場合、2.35→2.4、2.45→2.4、2.55→2.6、2.65→2.6 > こうすると、増える方に丸め処理と減る方に丸める処理が同じ確率で行われ > 全体としての誤差が減るのですね。 > この事を知っていないと2進数の演算誤差と混ざって???となるのですね。 > > 間違いがあったら突っ込んでください。m(_ _)m > > 昔使っていたIBMのマシンの演算はBCDだったようです。ファイルの数字が0〜9で > 表現されてました。 > > そういえば、Z-80の命令に10進補正命令というのがあったのを思い出しました。 GIF,JPEG,PNG画像ファイル及びLZH,ZIPファイルをアップロードできます.600 x 1200 ピクセルを超える画像は縮小表示されます(画像クリックで拡大表示). (上限122000(120k)バイト) 削除キー Link