我似乎无法使用f2py创建我的模块,以便在传递回python时将数字保持为双精度。一个最小的例子,文件为fmodules.f90:
subroutine example(output)
implicit none
double precision :: output
cf2py intent(out) :: output
output = 1.3
end subroutine example
然后我用f2py:
创建模块$ f2py -c -m fmodules fmodules.f90
并从python中调用它:
>>> from fmodules import example
>>> example()
1.2999999523162842
根据我的统计,这大约是8位精度。我的印象是双精度应该给出16左右。我已经尝试了我能想到的所有排列,包括使用.f2py_f2cmap
文件。关于我缺少的任何想法?
答案 0 :(得分:4)
您应该使用双精度
在Fortran代码中设置输出output = 1.3d0
在Fortran 1.3中是单精度常量。