【解決方法】Pythonで任意精度の平方根を計算するにはどうすればよいですか?


結果は次のとおりです。
1.4142135623730951
=> 参照
スクエアオーバー

それだけ 小数点以下16桁 long で、最後の桁も間違っています (1 それ以外の )

私が試したこと:

私はこのコードを試しました:

Python
from math import sqrt

def main():
    n = '2.0'
    root2th = sqrt(float(n))
    print(root2th)
    print('1.41421356237309504880168872420969807856967187537694807317667973799073247846210703', '=> reference')

if __name__ == '__main__':
    main()
    print('SQRT OVER')

解決策 1

私はPythonの経験がありませんが、短いグーグルでこれにたどり着きました:

from math import sqrt
# loading decimal library
from decimal import *

def main():
    n = '2.0'
    a = Decimal(2)
    root2th = sqrt(float(n))
    print(root2th)
    print(a.sqrt())
    print('1.41421356237309504880168872420969807856967187537694807317667973799073247846210703', '=> reference')

if __name__ == '__main__':
    main()
    print('SQRT OVER')

結果は次のとおりです。

1.4142135623730951
1.414213562373095048801688724
1.41421356237309504880168872420969807856967187537694807317667973799073247846210703 => reference
SQRT OVER

[Edit]

任意の精度、行を参照 getcontext().prec = 80

from math import sqrt
# loading decimal library
from decimal import *

def main():
    n = '2.0'
    getcontext().prec = 80
    a = Decimal(2)
    root2th = sqrt(float(n))
    print(root2th)
    print(a.sqrt())
    print('1.41421356237309504880168872420969807856967187537694807317667973799073247846210703', '=> reference')

if __name__ == '__main__':
    main()
    print('SQRT OVER')

コメント

タイトルとURLをコピーしました