在使用用 f2py 编译的 fortran 模块时,我遇到了 ipython 和 ipython 笔记本之间的奇怪精度差异。
我的 fortran 模块是:
subroutine tt(string,fmt,n_num,out)
implicit none
INTEGER,INTENT(IN)::n_num
CHARACTER(LEN=*),INTENT(IN)::string
CHARACTER(LEN=*),INTENT(IN)::fmt
DOUBLE PRECISION,INTENT(OUT)::out(n_num)
read(string,fmt) out
end subroutine tt
编译:f2py -c -m andre tt.f90
在 ipython 我得到:
In [1]: import numpy as np
In [2]: import andre
In [3]: out = np.array(andre.tt(' 0.34 4.56 5.67','(3f5.2)',3),dtype=np.float)
In [4]: print out
[ 0.34 4.56 5.67]
这是所需的输出。但是,在 ipython 笔记本中,使用相同的代码,我得到:
print out
print out+0.0001
[ 0. 4. 5.]
[ 1.00000000e-04 4.00010000e+00 5.00010000e+00]
我究竟做错了什么?