喫茶XRAYトップページ


[12445] 数値計算の誤差関係返信 削除
2018/11/14 (水) 23:17:01 Mr.XRAY
[ 06_数値の四捨五入等と数値を文字列にする関数類 ]
に Trunc 関数関係のサンプルを追加しました.

[ 08_関数の引数が数値を使用した式の時に発生する現象 ]
http://mrxray.on.coocan.jp/Delphi/plSamples/890_CalcError.htm#08

2018/11/15
別項目にしました.


[12446] Re:数値計算の誤差関係返信 削除
2018/11/14 (水) 23:27:34 Mr.XRAY
> に Trunc 関数関係のサンプルを追加しました.

こんな例もあります.
動作確認は [890] のサンプルと同じで
Windows 7 U64(SP1) + Delhi XE(UP1) Pro です.

procedure TForm1.Button1Click(Sender: TObject);
var
  LInteger : Integer;
begin
  LInteger := Trunc(5 * 0.01 * 100);

  Memo1.Lines.Clear;
  Memo1.Lines.Add(IntToStr(LInteger));
end;

procedure TForm1.Button2Click(Sender: TObject);
var
  LInteger : Integer;
  LDouble  : Double;
begin
  LDouble := 5 * 0.01 * 100;
  LInteger := Trunc(LDouble);

  Memo1.Lines.Clear;
  Memo1.Lines.Add(IntToStr(LInteger));
end;



[12447] Re2:数値計算の誤差関係返信 削除
2018/11/14 (水) 23:32:02 Mr.XRAY
>   LInteger := Trunc(5 * 0.01 * 100);

ちょっと意味合いは違いますが,
数値計算では演算の誤差を避けるために以下のような工夫をすることがあります.

procedure TForm1.Button1Click(Sender: TObject);
var
  LInteger : Integer;
begin
  LInteger := Trunc(100  * 5 * 0.01);

  Memo1.Lines.Clear;
  Memo1.Lines.Add(IntToStr(LInteger));
end;



[12448] Re2:数値計算の誤差関係返信 削除
2018/11/14 (水) 23:48:40 Mr.XRAY
> こんな例もあります.

このような現象は以下のようにすれば発生しません.

  LInteger := Trunc(9.98 * 100);
   ↓
  LInteger := Trunc(9.98 * 100.0);


  LInteger := Trunc(5 * 0.01 * 100);
   ↓
  LInteger := Trunc(5.0 * 0.01 * 100.0);


以上を以って数値計算の誤差に関する講義を終了とします.
えっ !? 何も説明していない ? う〜む.


[12462] Re:数値計算の誤差関係返信 削除
2018/11/20 (火) 21:59:25 Mr.XRAY
> [ 08_関数の引数が数値を使用した式の時に発生する現象 ]
> http://mrxray.on.coocan.jp/Delphi/plSamples/890_CalcError.htm#08


に,現在のシステムで使用可能な SSE 関係の機能を確認するコードを追加しました.
http://mrxray.on.coocan.jp/Delphi/plSamples/890_CalcError.htm#fig19


[12470] FPUの制御ワード関係とSafeLoadLibrary返信 削除
2018/11/23 (金) 16:59:22 Mr.XRAY
以下の記事を追加しておきました.

[ 09_FPU のコントロールワード ( 制御ワード ) と SafeLoadLibrary ]
http://mrxray.on.coocan.jp/Delphi/plSamples/890_CalcError.htm#09

それに伴い SSE 関係のサンプルも追加しました.

64 ビットの EXE による計算結果
http://mrxray.on.coocan.jp/Delphi/plSamples/890_CalcError.htm#fig17


[12479] Re:数値計算の誤差関係返信 削除
2018/11/25 (日) 18:04:01 Mr.XRAY
> [ 08_関数の引数が数値を使用した式の時に発生する現象 ]
> http://mrxray.on.coocan.jp/Delphi/plSamples/890_CalcError.htm#08


VCL-64, つまり 64 bit の EXE 作成に SSE がどのバージョンから使われるのか
分からなかったのですが,本日分かりました.
オンラインヘルプでの調べ方に問題があったようです.

Delphi XE7 からでした.
これに伴い記事を若干修正しました.


INCM/CMT
Cyclamen v3.82