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

Fortran format - problem with numbers < 1e-100

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

并且由于它被另一个程序读取,所以这些数字无法正确读取。

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

我想避免丢失一个数字,我想避免在打印前通过测试损失性能。

还有其他解决办法吗?对我来说,理想的解决方案是一种格式,它在指数上打印 2 位数字,并在 <1e-100 时更改为 3 位数字 其他好的解决方案是将非常小的数字转换为零的格式选项

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

谢谢

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

Currently I'm using the format 3D25.16 A possible solution would be forcing 3E25.15E3 The problem is that I lose 1 digit for any number

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

Other doubt is: when changing from 3D25.16 to 3E25.15E3 do I lose precision by changing D to E?

3E25.15E3:是的,你可能会(1 位数)。 3E26.15E3:不,你没有。