Fortran格式-数字<1e-100的问题

时间:2018-09-27 12:45:17

标签: fortran format precision digits

当程序中的一些数字变小时,我遇到了问题,因为我将它们写在文件上并且指数格式变得不同: 例如,数字> 1e-100: 0.3979111076224349D-98 较小的数字: 0.2306878464709676-101(D消失)

由于它是由另一个程序读取的,因此这些数字无法正确读取。

当前我使用的格式为3D25.16 一个可能的解决方案是强制3E25.15E3 问题是我输了1位数字

我要避免丢失数字,并且我要避免在打印之前丧失测试性能。

还有其他解决方案吗?对我来说,理想的解决方案是在指数上用2位数字打印指数格式,而当<1e-100时改为3位数字 另一个好的解决方案是将很小的数字转换为零的格式选项

另一个疑问是:从3D25.16更改为3E25.15E3时,将D更改为E会失去精度吗?因为不接受3D25.15E3

谢谢

1 个答案:

答案 0 :(得分:0)

正如每个人在评论中(以及您在问题中)所说,您可以只使用E描述符而不是D,因此可以指定指数部分的位数

  

当前我使用的格式为3D25.16,可能的解决方案是强制使用3E25.15E3。问题是我丢失了任意数字一位。

那么,为什么不只使用3E26.15E3增加输出的宽度呢?

  

另一个疑问是:从3D25.16更改为3E25.15E3时,将D更改为E会失去精度吗?

使用3E25.15E3:是的,您可以这样做(1位数字)。使用3E26.15E3:不,您不会。