2016-02-26 94 views
0

以下是我试图用它来得到我的结果的代码,我得到了一个错误:计算回报率内部收益率

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)) 

我需要一种方法来自动执行任何大小的数组。

回答

0

您得到的错误是因为您试图将速率舍入到1093.60小数位(即第4次迭代的b-1)。

numpy.arr适用于任何大小的阵列。你不必给它一个大小(你没有)。我收集到你试图打印利率的百分比,四舍五入到小数点后两位。使用这个来代替:

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 
+0

好。这就是它。现在,我可以使用我之前发布的相同代码来使所有内容都正确吗?或没有 ?因为我使用的是相同的代码,所以我没有为“netflow”获取相同的值。但是,当我在纸上做它时,它与我的答案相匹配。 – Master

+0

请说清楚。你问我是否可以使用相同的代码,但是说明相同的代码不会给你相同的值。我几乎无法检查原始数据,因为该帖子似乎已消失,并且使用了不同的帐户。 – Prune

+0

我不是说原来的代码。最后的代码我有这个链接:http://stackoverflow.com/questions/35661992/how-do-i-formulate-an-equation-so-that-it-calculates-my-i-value/35662689#35662689你现在可以在那里回答 – Master