喫茶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;



[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);


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


[▼次のスレッド]
INCM/CMT
Cyclamen v3.82