0
INTEGER, PARAMETER :: SINGLE=SELECTED_REAL_KIND(7)
REAL(KIND=SINGLE) :: K
REAL::X
...
K=X
WRITE(*,*) K

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

带 5 和 6 输出-> 1.39256

有 7 个输出-> 1.3925623893

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

4

1 回答 1

1

来自 gfortran 的文档:

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

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

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

write(*,'(F12.7)') K
于 2012-04-27T19:36:51.947 回答