2017-12-16 4 views
3

間math.log(X、ベース)は10進数またはしていない場合、私はPythonでチェックしようとしています:Pythonの剰余対数

import math 

# math.log(8, 2) = 3 
print math.log(8) 
print math.log(2) 
print math.log(8)/math.log(2) 
print 2.07944154168 % 0.69314718056 
print math.log(8) % math.log(2) 

出力は次のとおりです。

2.07944154168 
0.69314718056 
3.0 
0.0 
0.69314718056 

なぜ第四はありません印刷行はゼロを返しますが、第5は返しませんか?

+3

これは役に立ちますか? https://stackoverflow.com/questions/14763722/python-modulo-on-floats –

+0

あなたは%が2番目の演算子である0.69314718056の同じ値を返すことに気付きましたか? a%b = b ... lol – mlwn

+0

@mlwnはい、私は何を考えたらいいかわかりません。 – Caramelleamare

答えて

1

これはおそらく重複しているため閉鎖されますが、ちょうどその一つは、これが出て演じているかを確認することができます

>>> import math 
>>> math.log(8) 
2.0794415416798357 
>>> math.log(2) 
0.6931471805599453 

さて、あなたはmath.log(8) % math.log(2)を計算する必要があるとしましょう。 math.log(2)math.log(8)に分けて余りを計算する必要があります。見てみよう、それは3回になるのだろうか?

0.6931471805599453 
+ 0.6931471805599453 
+ 0.6931471805599453 
-------------------- 
    2.0794415416798359 

Woah!

0.6931471805599453 
+ 0.6931471805599453 
-------------------- 
    1.3862943611198906 

わかりましたので、残りは何です:私たちは、それは、実際には2つの時代に行く意味2.0794415416798357の値をオーバーシュート?

2.0794415416798359 
- 1.3862943611198906 
-------------------- 
    0.6931471805599453 

したがってTL; DRの残りは、丸め誤差のためmath.log(2)に近いです。それはちょうど3回は行きません。それはちょうど約math.log(2)を残して2回になる。

はい数値を印刷すると3.0と表示されますが、これは浮動小数点の丸め誤差です。これはPython固有のものではありません。

+0

私は今何が起こるのか理解しています。おそらく、[pythonモジュールの質問](https:// stackoverflow)に示唆されているように[this](https://docs.oracle.com/cd/E19957-01/806-3568/ncg_goldberg.html)を読んでください。 .com/questions/14763722/python-modulo-on-floats)を参照してください。 TL; DRとはどういう意味ですか? – Caramelleamare

1

は、これは私はそれはあなたの例のように見えます(のpython 2?)のpython 3

>>> print (math.log(8)) 
2.0794415416798357 
>>> print (math.log(2)) 
0.6931471805599453 
>>> print (math.log(8)/math.log(2)) 
3.0 
>>> print (2.07944154168 % 0.69314718056) 
0.0 
>>> print (math.log(8) % math.log(2)) 
0.6931471805599452 
>>> print (2.0794415416798357 % 0.6931471805599453) 
0.6931471805599452 

を使用して取得し、math.logの精度が十分でないものです。

+0

はい、私はPython 2.7でTutorialspointを試していました – Caramelleamare

関連する問題