Tcllib1.8(?)から付く多倍長実数演算です。今のとこSourceForgeからDLできるTcllib1.7には含まれていません。CVSかActiveTcl8.4.9.1からゲットできます。

使ってみる

package require math::bigfloat
#適当に計算
set a [fromstr 0.0000000000000000000000000000000000010]
set b [fromstr 0.0000000000000000000000000000000000010]
puts [tostr [add $a $b]]
2.e-36
#円周率
puts [tostr [pi 50]]
3.1415926535897932384626433832795028841971693993751

このパッケージは内部でbignumも読んでるので、整数の演算(BigInt)も普通にできます。

#BigIntの計算
set a [fromstr 1234000000000000000]
set b [fromstr 1234567890000000000]
puts [tostr [mul $a $b]]

あと、なんか知らんけどfromstrで実数を変換する時は最後に0をつけないといけないみたいです。たとえばfromstr 0.1はダメでfromstr 0.10にする。

bigfloatの型変換

色々な演算

あと、この辺の関数は全部グローバルな空間に定義してるので、コンフリクトしないように注意しないといけないです。マニュアルに一応の解決方法が書いてありますけど、できればbignumと名前空間を一緒にするとか統一してほしかった・・・。


CategoryTclTk


|New|Edit|Freeze|Diff|Backup|Attach|Copy|Rename|
Last-modified: 2005-05-10 (Tue) 00:00:00 (4941d)
HTML convert time: 0.021 sec.