error in math.sqrt

0

I'm using the math module in python, and I came up with a problem, when using math.sqrt for the root of 75, it returns me 7.5, even using float (), the root being something around 8.66 How can I fix this problem? (the values posted by the user are 5.5,5)

#Definimos a função que calcula o Delta
def deltaFn(a,b,c):
    d = float(math.pow(b,2)+((-4) * a * c))
    return d
#Função de cálculo da fórmula de Bhaskara para retornar os valores x1 e x2
def bhaskaraFn(a,b,c):
    #A unidade imaginária é False até o momento de sabermos o valor de delta, podendo variar para True
    i = False
    #Executa a função deltaFn para poder tirar a sua raíz
    delta = deltaFn(a,b,c)
    #Verificação de caso de raiz negativa
    if delta < 0:
        #Definir a unidade imaginária como True
        i = True
        #Tornamos o valor positivo para posteriormente indicarmos como unidade imaginária
        delta *= (-1)
        raizDelta = float(math.sqrt(delta)) ### <----------
        #A conta deve ser efetuada separadamente, para não haver risco de somar o valor Imaginário com o valor Real
        # - B / 2 * a
        termoB = (b * (-1)) / (2 * a)
        #Número imaginário (delta dividido por 2 * a e concatenado com 'i')
        imaginario = (delta / (2 * a))
        imaginario = str(imaginario) + 'i'
        #Valores de x1 e x2
        x1 = '%d + '%(termoB) + imaginario
        print('x1 = ',x1)
        x2 = '%d - '%(termoB) + imaginario
        print('x2 = ',x2)
        return (i,x1,x2)
    else:
        raizDelta = math.sqrt(delta)
        x1 = ((b * (-1)) + delta) / (2 * a)
        x2 = ((b * (-1)) - delta) / (2 * a)
        return (i,x1,x2)
    
asked by anonymous 02.05.2018 / 16:57

1 answer

2

You're confusing your variables. First

delta *= (-1)
raizDelta = float(math.sqrt(delta))

And then use delta , when you calculated the root and put it in the variable raizDelta :

imaginario = (delta / (2 * a))

What you want to do is use the variable raizDelta :

imaginario = (raizDelta / (2 * a))
    
02.05.2018 / 17:09