2017-08-24 44 views
-1

我想寫一些python代碼,它在一個給定的數字上執行一個sqrt。意識到一些情況可能只是吐出小數(我不想)。在決定如何處理它之前,如何檢查或添加什麼代碼來確定結果是代碼中的整數還是小數?如何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。劇本在幾秒鐘內突然拍攝了25g的ram,幾乎把我的電腦撞壞了。 – Mine

+0

據我所知,x ** 0.5 == sqrt(x) – Will

+0

哦,哦,哦!我想你是正確的。好的,這是有道理的。 – Mine

相關問題