我在使用f2py编译的fortran模块从ipython中的ascii文件中读取浮点数时发现了一个奇怪的行为。测试文件' test.txt'只包含一个浮点数:
5.945
我用来读取文件的子程序可以是:
subroutine read_test
implicit none
real :: dum
open(10,file='test.txt')
read(10,*) dum
print*, dum
close(10)
return
end subroutine read_test
编译
f2py -c test.f90 -m test
如果我只使用没有命令行选项的python或ipython,则读取的数字就像它们在文件中一样。
In [1]: import test
In [2]: test.read_test()
5.94500017
使用ipython --pylab或--matplotlib给出
In [1]: import test
In [2]: test.read_test()
5.00000000
使用python 2.7.6,ipython 2.3.0,numpy 1.8.2和matplotlib 1.4.3。我也试过ipython 3.0.0,4.0.0和4.0.1,numpy 1.9.2和1.10.2,以及matplotlib 1.4.3或1.5.10。只切换到python 2.7.10似乎改变了预期的行为。
有人可以向我解释出现了什么问题。不幸的是,2.7.6是我们整个环境的默认设置,升级会有点麻烦。