[ad_1]
結果は次のとおりです。
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')
[ad_2]
コメント