喫茶XRAYトップページ
[
▲前のスレッド
]
[12445]
数値計算の誤差関係
返信
削除
2018/11/14 (水) 23:17:01
Mr.XRAY
[ 06_数値の四捨五入等と数値を文字列にする関数類 ]
に Trunc 関数関係のサンプルを追加しました.
[ 08_関数の引数が数値を使用した式の時に発生する現象 ]
http://
mrxray.
on.
coocan.
jp/
Delphi/
plSample
s/
890_Calc
Error.
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/
plSample
s/
890_Calc
Error.
htm#
08
に,現在のシステムで使用可能な SSE 関係の機能を確認するコードを追加しました.
http://
mrxray.
on.
coocan.
jp/
Delphi/
plSample
s/
890_Calc
Error.
htm#
fig19
[12470]
FPUの制御ワード関係とSafeLoadLibrary
返信
削除
2018/11/23 (金) 16:59:22
Mr.XRAY
以下の記事を追加しておきました.
[ 09_FPU のコントロールワード ( 制御ワード ) と SafeLoadLibrary ]
http://
mrxray.
on.
coocan.
jp/
Delphi/
plSample
s/
890_Calc
Error.
htm#
09
それに伴い SSE 関係のサンプルも追加しました.
64 ビットの EXE による計算結果
http://
mrxray.
on.
coocan.
jp/
Delphi/
plSample
s/
890_Calc
Error.
htm#
fig17
[12479]
Re:数値計算の誤差関係
返信
削除
2018/11/25 (日) 18:04:01
Mr.XRAY
> [ 08_関数の引数が数値を使用した式の時に発生する現象 ]
>
http://
mrxray.
on.
coocan.
jp/
Delphi/
plSample
s/
890_Calc
Error.
htm#
08
VCL-64, つまり 64 bit の EXE 作成に SSE がどのバージョンから使われるのか
分からなかったのですが,本日分かりました.
オンラインヘルプでの調べ方に問題があったようです.
Delphi XE7 からでした.
これに伴い記事を若干修正しました.
[
▼次のスレッド
]
INCM/CMT
Cyclamen v3.82