gpt4 book ai didi

format - gfortran - 实际输出是否允许未指定的十进制长度?

转载 作者:行者123 更新时间:2023-12-04 04:37:26 26 4
gpt4 key购买 nike

有没有办法格式化输出的实数,以便宽度和小数部分都未指定?只需执行以下操作,ifort 就可以做到这一点:
write (*, '(F)') num
...但我知道这种用法是特定于编译器的扩展。 Gfortran 确实接受符合标准的 0 宽度说明符,但我在标准和 gfortran 的文档中都找不到关于如何不指定小数部分的任何内容。显而易见的猜测是也只使用 0,但这会产生不同的结果。例如,鉴于此:

real :: num
num = 3.14159
write (*, '(F0.0)') num

...输出只是 3. .我知道我可以指定一个大于零的十进制值,但是我很可能会打印出不需要的额外零。

我有哪些选择?我有吗?

最佳答案

最佳解决方案:

事实证明,最简单的解决方案是使用 g说明符(“g”代表“广义编辑”)。接受 0表示未指定/依赖于处理器的宽度,这正是我想要的。这比不指定整个格式( write(*,*) )更可取,因为您仍然可以控制输出的其他部分,例如:

real :: num
character(len=10) :: word
num = 3.14159
word = 'pi = '
write (*, '(a5,g0)') word, num

产生这个:
pi = 3.14159012

感谢 Vladimir F对于这个想法(见 here)。

劣质替代品:

今天早上看到高性能标记的答案后,我的第一个想法是将实数写入字符串,然后使用它:
character(len=20) :: cnum
write (cnum, *), num
write (*, '(a5,a)') word, trim(adjustl(cnum))

它产生与最佳解决方案相同的输出,但它稍微复杂一些,并且它没有提供那么多的控制,但它很接近。

关于format - gfortran - 实际输出是否允许未指定的十进制长度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19503960/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com