|
|
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と名前空間を一緒にするとか統一してほしかった・・・。 |