Повышение базы (которая является десятичной) до степени дает ложные результаты - PullRequest
0 голосов
/ 10 мая 2019

Это калькулятор для суммы геометрических рядов, и моя проблема в том, что если основание (r) является десятичным и возведено в любую степень> 1, я получу неправильный результат 5,5 ^ 2 - это 25, это 30,25

(для вас, редакторы, я не знаю, как выделить код, и для дальнейшего удобства я хотел бы знать, как это действительно помогло бы, если бы я получил инструкции о том, как это сделать)

Я пытался присвоить переменным функцию «float», предполагая, что если python видит переменную как десятичную, то, возможно, то, что после десятичной запятой, будет также повышено до степени.

a1 = int(float(input("First Term in Sequence")))
r = int(float(input("Rate of Change")))
n = int(float(input("Number of Terms")))


def a(r,n):
    global rn
    r = float(r)
    n = float(n)
    rn = r**n
    return rn

Я ожидаю, что вывод будет правильным: Как в 5.5 ^ 2 = 30.25

Не: 5,5 ^ 2 = 25

Это почти как если бы код не беспокоился о том, что следует после десятичного числа

1 Ответ

4 голосов
/ 10 мая 2019
a1 = int(float(input("First Term in Sequence")))
r = int(float(input("Rate of Change")))
n = int(float(input("Number of Terms")))

Почему вы переключаете свои входы на int здесь?

Если бы вы набрали 5.5, он стал бы 5 здесь. После этого, даже если вы сделаете float(5), вы все равно получите 5.0, а не 5.5

Итак, вы на самом деле рассчитываете 5.0 ** 2.0 == 25

...