1

以下は、結果を取得するために使用しようとしているコードであり、エラーが発生しています。

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

任意のサイズの配列に対して自動的に行う方法が必要です。

4

1 に答える 1

1

レートを小数点以下 1093.60 桁に丸めようとしたため、エラーが発生しました (4 回目の反復では b-1 です)。

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
于 2016-02-26T23:49:58.023 に答える