Рассчитать процентную внутреннюю норму доходности

Ниже приведен код, который я пытаюсь использовать для получения результата, и я получаю сообщение об ошибке:

import numpy

array = [-1000,0,0,1094.60,0,0,1094.60]

for b in array:
    a = round(numpy.irr(array), b-1) * 100 
print (round(a,2))

Ошибка:

TypeError: 'float' object cannot be interpreted as an integer

Но просто замена этого "b-1" заставляет мой код работать, но я не могу использовать это, потому что массив может быть как можно большим или маленьким. Мне не разрешается вручную вводить цифры, заменяя это "b-1". Ниже приведен тот же рабочий код.

import numpy

array = [-1000,0,0,1094.60,0,0,1094.60]

for b in array:
    a = round(numpy.irr(array), 6) * 100 
print (round(a,2))

Мне нужен способ сделать это автоматически для любого размера массива.

1 ответ

Вы получили ошибку, потому что пытались округлить скорость до 1093.60 десятичных знаков (это b-1 для 4-й итерации).

numpy.arr работает с массивами любого размера. Вам не нужно указывать размер (а вы этого не сделали). Я понял, что вы пытаетесь напечатать процентную ставку в процентах, округленную до 2 десятичных знаков. Используйте это вместо:

rate = numpy.irr(array) * 100
print "rate =", round(rate, 2)

Использование этого в конце кода, который я дал вам ранее, дает следующий результат для сравнения:

Present Value (P) at rate 0.0125 = 0.217803365612
Present Value (P) at rate 0.01875 = -0.143198101517
Present Value (P) at rate 0.015625 = 0.0349275148787
Present Value (P) at rate 0.0171875 = -0.0547196000329
Present Value (P) at rate 0.01640625 = -0.0100432897584
Present Value (P) at rate 0.016015625 = 0.0124051532756
Present Value (P) at rate 0.0162109375 = 0.00117171042648
rate = 1.62
Другие вопросы по тегам