数字< 1e-100 的 Fortran 问题



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

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

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

我想避免丢失一个数字,并且我想避免在打印前的测试中失去性能。

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

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

谢谢

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

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

数字

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

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

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

最新更新