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?
来自 gfortran 的文档:
SELECTED_REAL_KIND(P,R) 返回小数精度至少为 P 位的实数数据类型的种类值
至少是重要的。浮点数大部分时间使用 4 个字节(单精度)或 8 个字节(双精度)存储,仅此而已。从询问 6 到 7 个有效数字实际上增加了更多的数字:您从单精度切换到双精度。
你真正想要的是一个足够大的真正来存储你想要的精度,并且你已经正确地做到了,然后使用如下格式只显示 7 个有效数字:
write(*,'(F12.7)') K