【问题标题】:Fortran format - problem with numbers < 1e-100Fortran 格式 - 数字 < 1e-100 的问题
【发布时间】:2018-09-27 12:45:17
【问题描述】:

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

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

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

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

还有其他解决办法吗?对我来说,理想的解决方案是一种在指数上打印 2 位数字并在

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

谢谢

【问题讨论】:

  • 3E26.15E3 怎么样
  • 为什么不使用3e26.15e3
  • 请注意,您同时提出了两个不同的问题。这并不是人们应该如何就 SO 提出问题的方式。您可能会考虑提出两个不同的问题。
  • 最好不要问关于d 而不是e 的单独问题。但是,您可以看到 this question 对此。
  • '问题是我丢失了任何数字的 1 位数字'。要么你不太关心存储,你可以添加额外的数字,或者你非常关心空间,不应该使用 ASCII。

标签: fortran format precision digits


【解决方案1】:

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

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

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

其他疑问是:从 3D25.16 更改为 3E25.15E3 时,将 D 更改为 E 是否会丢失精度?

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

【讨论】:

    猜你喜欢
    • 2016-10-02
    • 1970-01-01
    • 1970-01-01
    • 2023-03-27
    • 1970-01-01
    • 2012-10-27
    • 2021-01-02
    • 2013-12-05
    • 1970-01-01
    相关资源
    最近更新 更多