首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何用Fortran打印格式固定的极小双精度数字?

如何用Fortran打印格式固定的极小双精度数字?
EN

Stack Overflow用户
提问于 2015-11-27 02:51:28
回答 2查看 452关注 0票数 2

有没有办法在Fortran中用固定格式的打印极小的双精度数字?不知何故,"E“被截断了。

在下面的代码中将“ES15”更改为“ES18”无助于:

代码语言:javascript
复制
program print_double
  implicit none
  double precision :: x
  x = 2.71818D-200
  write(*,*)                 "fmt=*     : x = ", x
  write(*,fmt='(A,ES15.3)') " fmt=ES15.3: x = ", x
  write(*,fmt='(A,E15.3)')  " fmt= E15.3: x = ", x
end program print_double

这是输出:

代码语言:javascript
复制
$ gfortran print_double.f90 -o print_double && ./print_double
 fmt=*     : x =    2.7181800000000000E-200
 fmt=ES15.3: x =       2.718-200
 fmt= E15.3: x =       0.272-199

$ ifort print_double.f90 -o print_double && ./print_double
 fmt=*     : x =   2.718180000000000E-200
 fmt=ES15.3: x =       2.718-200
 fmt= E15.3: x =       0.272-199

注意:这是一个代码,在代码中,我检查通过两种不同的数学方法得到的解是否一致。大多数情况下,差异很小(即远低于机器精度),但情况可能并不总是如此。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-11-27 04:28:48

可以使用Ew.dEe描述符指定指数中的数字数。它也适用于科学和工程格式。

write(*,fmt='(A,ES15.3E3)') " fmt=ES15.3E3: x = ", x

给出

fmt=ES15.3E3: x = 2.718E-200

票数 2
EN

Stack Overflow用户

发布于 2015-11-27 04:24:45

在没有规范的情况下,指数字段的大小的默认宽度为2。如果指数大小需要比指数字段提供的字符多一个字符,则删除ED指数字母。(请注意,对于Fortran格式化的输入,该表单带有缺失的指数字母,是完全可以接受的。)

如果您想要三个字符指数,那么指定三个字符指数。

代码语言:javascript
复制
write(*,fmt='(A,ES15.3E3)') " fmt=ES15.3E3: x = ", x
write(*,fmt='(A,E15.3E3)')  " fmt= E15.3E3: x = ", x   
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33949616

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档