掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
小数点以下切捨てについて (ID:22407)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
本題と違うべさ! 私のレスは小数の切り捨て処理です。 浮動小数の計算上の誤差は全く別問題です。 で、鳥さんが行いたいのは浮動小数の誤差を無くしたいって事なので 簡単にできる方法としては、整数を使う方法があります。 保障したい桁数だけ小数点をシフトさせて計算すればOKです。 ただしこの際も桁あふれには注意してください。 ちなみに >>だと、1020ではなく1019となってしまいます。 10だろ〜!!!! とりあえずこの手の計算をするのであれば"浮動小数 誤差"でググってください。当然ながらExcelで同じ計算をさせても同じ現象が起こります。 回避例 procedure TForm1.Button2Click(Sender: TObject); var D1, D2, D3, D4, D5: Extended; i1, i2, i3, i4, i5: Int64; i0:Int64; begin i0:= 10000000000000; D2 := 1.000000333332; i2 := Trunc(D2 * i0); //D4:=D2-1; //0.000000333332 //D5 := 0.000000083333 / D4; i4 := i2 - 1*i0; D5 := Trunc(0.000000083333*i0) / i4; Edit1.Text:= FormatFloat('',D5); D4 := 0.000000333332; //D5 := 0.000000083333 / D4; i4 := Trunc(D4*i0); D5 := Trunc(0.000000083333*i0) / i4; Edit2.Text:= FormatFloat('',D5); end;
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.