掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
2個の変数の値を入れ替えるには (ID:352)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
> ループ計算した場合 ためしにしてみました。 procedure TForm1.Button2Click(Sender: TObject); var a,b: single; n,m:single; i, j : integer; begin n:=0; m := 1.1; a := 0; b := 11; for i := 0 to 999 do begin for j := 0 to 999 do begin n := n + m; a := a + b; end; end; Edit1.Text := FloatToStr(n); Edit2.Text := FloatToStr(a); end; です。singleとdouble、両方試しました。 結果は、 singleの場合、 1.1を1000000回 1110920.5 11を1000000回 11000000 doubleの場合、 1.1を1000000回 1099999.99998869 11を1000000回 11000000 doubleでも誤差は生じます。 これは、内部で少数を2進数で持っているからだと思います。 もし、精度を上げたければ、100倍なり1000倍なりして、整数にしてから計算させたほうがよいです。 速度も速くなりますし。
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.