ものすごい大きい数から
ものすごい小さい数まで計算できるので
いらないかもしれませんが
一応、考え方として
どれくらい大きい数から
どれくらい小さい数まで計算できるか
決めておいた方がいいですよね
とりあえず、最大1e+300
最小1e-300まで計算できるように決めました
決めるったら決めるw
でそんなのを求めるスクリプトです
追記:doubleの下限は300桁ちょいくらいなので
doubleの桁数も考え最小1e-285に変更しました
use strict; use warnings; printf &mul_10_X_count(0)."\n"; printf &mul_10_X_count(3)."\n"; printf &mul_10_300_count()."\n"; printf &mul_10_300_count()*&mul_0p1_X_count(300)."\n"; printf &mul_0p1_X_count(0)."\n"; printf &mul_0p1_X_count(3)."\n"; printf &mul_0p1_285_count()."\n"; printf &mul_0p1_285_count()*&mul_10_X_count(285)."\n"; # 10の引数A乗の数を返す sub mul_10_X_count{ my $x=1.0; my $i=$_[0]; $i--; for(0..$i){ $x*=10; } return $x; } # 10の300乗の数を返す sub mul_10_300_count{ return &mul_10_X_count(300); } # 0.1の引数A乗の数を返す sub mul_0p1_X_count{ my $x=1.0; my $i=$_[0]; $i--; for(0..$i){ $x/=10; } return $x; } # 0.1の285乗の数を返す sub mul_0p1_285_count{ return &mul_0p1_X_count(285); } |
0 件のコメント:
コメントを投稿