2011-11-14 2 views
0

は、次の点を考慮してくださいCython/numpyの:フロート切り捨てている

import numpy as np 
cimport numpy as np 

DTYPE = np.float 
ctypedef np.float_t DTYPE_t 

def do(np.ndarray[DTYPE_t, ndim=2] hlc, int days=2): 
    cdef float dvu = 0.0 
    cdef Py_ssize_t N = np.shape(hlc)[1]-1, i, j, k 

    cdef np.ndarray[DTYPE_t] h = hlc[0] 
    cdef np.ndarray[DTYPE_t] l = hlc[1] 

    cdef np.ndarray[DTYPE_t] output = np.empty(N+1, dtype=np.float)  

    for i from 0 <= i <= days-1: 
     output[i] = np.NaN 

    for j from N >= j >= days-1: 
     for k from j >= k >= j-days+1: 
      dvu += ((h[k] + l[k])/2.0) - 1.0 
     print dvu # prints a float 
     output[j] = dvu/days 
     dvu = 0.0 

    return output 

私はプリングDVU文の外に、私は丸められていない浮動小数点数を取得する場合。値をoutput [j]に設定して出力を返すと、すべての値が丸められます。私は完全な浮動小数点数を丸めて出力を返す必要があります。私が間違ってやっていることに関する考えは?

+0

'np.float'は' double'のCデータ型に対応し、 'float'には対応していません - これはあなたのエラーですが、少なくともそれは注目に値する警告です。 –

+0

'DTYPE'と 'DTYPE_t'をそれぞれ 'np.double'と 'np.double_t'に変更しました。それは問題を解決しませんでしたが、ヘッドアップのおかげで。 –

答えて

0

私はダムです。別のモジュールでラウンド関数を使って物を印刷していました。私の人生の3時間は私が戻ってくることはありません...

関連する問題