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


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