要約
普通に計算すればいいものをわざわざ長いコードを作って10の累乗で近似するだけの記事
python初心者による練習で作られたコードを紹介します。
すごいものではないので過度の期待は危険。
実用性はないと思います。このコードそのものに応用例なんてあるんでしょうか。
なんでもいいからpythonで何かを動かしてみたい!という方は使ってみてください。
pythonで任意の正の実数を10の累乗で不等式評価できるコードを作ってみました。
ただしあまりにも大きい数字だとオーバーフローしてしまいます。
小さすぎると0e+00になってしまいます。
コードはこちらになります。
x=1 y= # =の右に任意の正の実数 while x < y: x *= 10 if x >= y: print('{:.0e}'.format(x/10),'<','y','<','{:.0e}'.format(x)) while x > y: x *= 1/10 if x <= y: print('{:.0e}'.format(x),'<','y','<','{:.0e}'.format(x*10))
一つ目のwhileはxがy以上になるまでひたすら10倍し続けるもので、二つ目は逆にxがy以下になるまでひたすら10で割り続けるものになっています。
すごく単純な構造ですが、whileとifが程よく放り込まれているので練習にはもってこいでした。
'{:.0e}'.format(x)←これで1e+〇=1*10^〇の形にしています。仕組みはよくわかりません。
y=777^77を代入してみます。
x=1 y=777**77 while x < y: x *= 10 if x >= y: print('{:.0e}'.format(x/10),'<','y','<','{:.0e}'.format(x)) while x > y: x *= 1/10 if x <= y: print('{:.0e}'.format(x),'<','y','<','{:.0e}'.format(x*10)) 1e+222 < y < 1e+223 1e+222 < y < 1e+223
777^77は10^222から10^223の間にあることがわかりました。
何故か2つ同じ不等式が出力されてますが気にしない気にしない。
次は小さい数字としてy=1/17^175を代入してみます。
x=1 y=1/17**175 while x < y: x *= 10 if x >= y: print('{:.0e}'.format(x/10),'<','y','<','{:.0e}'.format(x)) while x > y: x *= 1/10 if x <= y: print('{:.0e}'.format(x),'<','y','<','{:.0e}'.format(x*10)) 1e-216 < y < 1e-215
1/17^175は10^-216から10^-215の間にあることがわかります。
実際に計算してみると
print(1/17**175) 4.692872540150196e-216
となるので出力された不等式は正しいことがわかります。
y=77**777は桁が多すぎるので割愛。
yは指数である必要はないので、階乗とかでもできます。