【问题标题】:How can i get up to 7 significant figures of my result in FORTRAN90?如何在 FORTRAN90 中获得最多 7 位有效数字?
【发布时间】:2012-04-25 20:36:17
【问题描述】:
INTEGER, PARAMETER :: SINGLE=SELECTED_REAL_KIND(7)
REAL(KIND=SINGLE) :: K
REAL::X
...
K=X
WRITE(*,*) K

当我在SELECTED_REAL_KIND 中写入 5 或 6 时,它会输出 6 个有效数字,但当我尝试 7 时,它会输出超过 7。你能告诉我为什么吗?我哪里弄错了?分配有问题?

带 5 和 6 输出-> 1.39256

有7个输出-> 1.3925623893

好吧,我在问一个简单的问题。我怎样才能输出这个数字的 7 个有效数字 1.3925623893 ?

【问题讨论】:

  • 显示你得到的输出会很有帮助
  • 这也有助于查看最初分配给 x 和/或 k 的值。 1.3925623893 的值对我来说毫无意义。

标签: fortran90 significant-digits


【解决方案1】:

来自 gfortran 的文档:

SELECTED_REAL_KIND(P,R) 返回具有至少 P 位小数精度的实数数据类型的 kind 值

至少很重要。浮点数大部分时间使用 4 个字节(单精度)或 8 个字节(双精度)存储,仅此而已。那是从 6 到 7 个有效数字实际上增加了更多数字:您从单精度切换到双精度。

你真正想要的是有一个足够大来存储你想要的精度,并且你已经正确地做到了,然后显示只有 7 个有效数字,使用如下格式:

write(*,'(F12.7)') K

【讨论】:

    猜你喜欢
    • 2019-08-24
    • 1970-01-01
    • 2017-04-15
    • 1970-01-01
    • 2019-06-09
    • 2021-03-08
    • 2017-09-04
    • 2016-04-27
    • 1970-01-01
    相关资源
    最近更新 更多