喫茶XRAYトップページ


[5391] 「890_計算誤差(数値計算の誤差)と多倍長演算」読んで返信 削除
2011/10/10 (月) 04:41:00 snail3
最近色々なものが相次いで壊れます。自宅のPCもいかれました。

貧乏で新しいマシンが買えないので古いPCを分解して、部品を合わせて昔どこかで見たパソコンを改めて作っています。

やっと HyperV で XP を導入して、Delphi6をインストールしています。これから延々とパッチ作業、、、

インストールの合間に「890_計算誤差(数値計算の誤差)と多倍長演算」を見ました。ちゃんと読んでいませんが、、、、

Delphiには昔から BCD型があります。DELPHI6 ではバグだらけで利用できませんでしたが最近のものは少し試しただけですが問題ないみたいです。
計算誤差が困る方はBCD型をお勧めします。

[5392] Re:「890_計算誤差(数値計算の誤差)と多倍長演算」読んで返信 削除
2011/10/10 (月) 09:10:48 snail3
BCD 型の使い方です。こんな感じで使えます。


procedure TForm1.Button2Click(Sender: TObject);
var
  WrkBCD1 : TBcd;
  WrkBCD2 : TBcd;
  WrkBCD : TBcd;
begin
  WrkBCD1 := StrToBcd( Edit1.Text );
  WrkBCD2 := StrToBcd( Edit2.Text );

// 加算 BcdAdd(const TBcd bcdIn1, const TBcd bcdIn2, TBcd bcdOut);
// 減算 BcdSubtract(const TBcd bcdIn1, const TBcd bcdIn2, TBcd bcdOut);
// 乗算 BcdMultiply(const TBcd bcdIn1, const TBcd bcdIn2, TBcd bcdOut);
// 除算 BcdDivide(const TBcd Dividend, const TBcd Divisor, TBcd bcdOut);
  BcdAdd( WrkBCD1, WrkBCD2, WrkBCD );
  Button2.Caption := BcdToStr( WrkBCD );

end;


[5393] Re:「890_計算誤差(数値計算の誤差)と多倍長演算」読んで返信 削除
2011/10/10 (月) 10:31:01 Mr.XRAY
▼ snail3さん

> 貧乏で新しいマシンが買えないので古いPCを分解して、
>部品を合わせて昔どこかで見たパソコンを改めて作っています。


昔はよくやりました.
そうですか.snail3さんは貧乏なんですか.
最近の貧乏は伝染するようなので,あまり私に近づかないでください(笑)
 
> Delphiには昔から BCD型があります。DELPHI6 ではバグだらけ(以下略)
> 計算誤差が困る方はBCD型をお勧めします。


そうでしたね.BCDのことも後で追加しておきます.
あの記事は,頭の中に浮動小数点型の演算誤差のことしかありませんでした.
参考コードまでいいだき,サンクスです.


INCM/CMT
Cyclamen v3.82