2017-08-24 12 views
-1

私は与えられた数値にsqrtを実行するPythonコードを書こうとしています。いくつかの状況が単純に小数点を吐き出すかもしれないことに気付く(これは私が望まない)。コードで何が行われるかを決める前に、結果が整数か小数かを判断するために、どのようにコードを追加する必要がありますか?数値をsqrtに変換する方法と、その小数点以下の桁数が異なる場合

この質問はリストではないので、リスト内のどのようにするかではなく、平方根関数の精度を保証する方法ではありません。

+0

確認したい数値の大きさはどれくらいですか? –

+0

どのくらいの大きさですか?私は256ビット以上の数字を言うだろう...;) – Mine

答えて

3

if int(num) == num:をチェックしてみませんか?それはうまくいくはずです。

from decimal import * 
getcontext().prec = 20 #It represents the precision. Increase it if you need. 
num = Decimal(num).sqrt() 
if int(num) == num: 
    print 'whole number' 
else: 
    pass 
+0

@JohnColemanあなたはどういう意味ですか?入力された数字が完全な正方形かどうかを知りたいだけです。これはうまくいくようですが、多分私は間違っています。 – Mine

+0

@JohnColeman私は本当にお粗末な仕事のために申し訳ありません。私はstackoverflowに新しいです。インデントしている間に 'num ='部分を間違って削除しました。私の間違いを指摘してくれてありがとう。私は本当にご迷惑をおかけして申し訳ありません。 –

0

以下のような条件で十分ですか?

import math 

def alternativeSqrt(x): 
    num = x**0.5 
    if math.floor(num) == num: 
     return num 
    else: 
     return f(x) 
+0

私は十分に "x ** 0.5"をよく知っているわけではありません。前の答えはうまくいったが、私は確かに、より決定的なものを好むだろう。モジュール式の平方根のように、完全に異なる数を与えるか失敗するか。私は精度が "高すぎる"と設定したときに私はPythonをオーバーロードしました。私は以前の答えで推測します。スクリプトは突然数秒で25GBのRAMを使い、コンピュータを壊してしまいました。 – Mine

+0

私の知る限り、x ** 0.5 == sqrt(x) – Will

+0

ああああ!あなたが正しいと思います。さて、それは理にかなっています。 – Mine

関連する問題