|
本帖最后由 vvt 于 2019-8-28 08:14 编辑
精度肯定影响这个问题的。
不只是 0.1 和 0.1d0 不一样(常量的精度),变量也需要定义为相同的精度类型(kind=8之类的)
ivf和gfortran的不同在于:用表控格式输出write(*,*),对单精度(实际只有7位有效数字),gfortran会默认输出9个有效数字。但ivf只默认7个[Fortran] 纯文本查看 复制代码 08 | write ( * , * ) a , "+" , b , "=" , a + b |
09 | write ( * , '(3(f10.5,a))' ) a , "+" , b , "=" , a + b |
10 | write ( * , '(3(es13.6,a))' ) a , "+" , b , "=" , a + b |
11 | write ( * , * ) a 2 , "+" , b 2 , "=" , a 2 + b 2 |
所以你感觉ivf和gfortran精度不同而已。
实际上,你查看两者结果的二进制,是一样的。
或者用 es13.6 查看,也是一样的
(楼主可以用ivf和gfortran分别编译运行以上代码,对比查看)
|
|