Fortran Coder

标题: FORTRAN77 输出后数值发生变化 [打印本页]

作者: FlagArchitect    时间: 2019-8-21 17:31
标题: FORTRAN77 输出后数值发生变化
[Fortran] 纯文本查看 复制代码
      WRITE(6,38)K1,AK1,K21,AK21,K31,AK31,K01,AK01                      00007890
   38 FORMAT(1H ,' K1=',1PE10.3,2X,F7.3,5X,'K21=',1PE10.3,2X,           00007900
     1F7.3,5X,'K31=',1PE10.3,2X,F7.3,5X,'K01=',1PE10.3,2X,              00007910
     2F7.3/)


这段代码中变量AK1,AK21,AK31,AK01用浮点数输出后数值是用科学计数法输出的10倍,结果如图。
是什么导致了这个现象呢?求各位大佬解答。


捕获.PNG (5.05 KB, 下载次数: 256)

捕获.PNG

作者: li913    时间: 2019-8-21 21:34
1、给出用两种形式输出的结果 and 代码.
2、看看P编辑符。
3、我试了,没有你说的情况。

QQ截图20190821213231.png (23.2 KB, 下载次数: 264)

QQ截图20190821213231.png

作者: FlagArchitect    时间: 2019-8-22 14:21
li913 发表于 2019-8-21 21:34
1、给出用两种形式输出的结果 and 代码.
2、看看P编辑符。
3、我试了,没有你说的情况。

我重新截了下图,上面那一段是原来的代码,后面两个write是我加的。
我如果把原来代码里的F7.3改成1PE10.3,结果就是对的。但是用Fx.x,就是原来的十倍。

002.PNG (15.79 KB, 下载次数: 259)

002.PNG

001.PNG (18.12 KB, 下载次数: 234)

001.PNG

作者: FlagArchitect    时间: 2019-8-22 14:23
FlagArchitect 发表于 2019-8-22 14:21
我重新截了下图,上面那一段是原来的代码,后面两个write是我加的。
我如果把原来代码里的F7.3改成1PE10. ...

会不会是编译器的问题呢,我用的simply fortran,学校这破电脑的VS死活装不上intel的编译器
作者: li913    时间: 2019-8-23 15:37
本帖最后由 li913 于 2019-8-23 20:54 编辑

如果你认真看看P编辑符的说明就明白了。1、输出时,P遇到E,输出值不变,但输出样式会变(比如1p结果: 1.0e1 变为 0.1e2);
2、P遇到f,输出值改变(1p结果: 10.0 变为 100.0);
3、同一行输出两个或多个数据,如果第一个格式出现P, 后续的输出默认继承前一个P的效果;
4、可用0P取消该继承效果。"(1Pe12.3,e12.3)" 两个都具有P效果;"(1Pe12.3,0Pe12.3,f12.3)"仅第一个具有P效果。

QQ截图20190823152239.png (23.9 KB, 下载次数: 250)

QQ截图20190823152239.png

QQ截图20190823153455.png (84.08 KB, 下载次数: 256)

QQ截图20190823153455.png

作者: FlagArchitect    时间: 2019-8-27 14:22
li913 发表于 2019-8-23 15:37
如果你认真看看P编辑符的说明就明白了。1、输出时,P遇到E,输出值不变,但输出样式会变(比如1p结果: 1.0e1 ...

明白了,感谢大佬指点!




欢迎光临 Fortran Coder (http://bbs.fcode.cn/) Powered by Discuz! X3.2