我在generation.f90中具有以下子例程

SUBROUTINE generation(t, prob)
    IMPLICIT NONE

    INTEGER, INTENT(IN) :: t
    REAL(8), INTENT(OUT) :: prob
    INTEGER :: nT2, c

    Do some stuff with t, nT2 and c

    prob = nT2/(DBLE(1.0)*c)
END SUBROUTINE generation


我想在Python中使用它,所以用f2py包裹它

f2py -c -m generation generation.f90 --fcompiler=gnu95

然后在ipython中,我做

from generation import *
a = generation(10000); type(a)


我得到float。我检查了生成的C文件testmodule.c

f2py generation.f90 -m test

probdouble类型。我希望type(a)numpy.float64。我该怎么办?我对Fortran和f2py相当陌生。

最佳答案

默认情况下,python中的浮点数是双精度的。较难的问题是获取单精度浮点数,这需要numpy或其他数学软件包。但就您而言,您不必担心。

关于python - Fortran double 转换为Python float,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23075305/

10-12 18:12