fortran - 将实数写入字符串时输出为 '*'

标签 fortran

我有一个真正的CURRENTTIME,我想将其转换为名为TIMEDIR 的字符串。由于 TIMEDIR 必须更改其大小,因此它是可分配的。据我所知,分配工作正常。另外,我检查了 CURRENTTIME 有一个值。

ALLOCATE(CHARACTER(LEN=1)::TIMEDIR)
WRITE(TIMEDIR, '(F1.0)') CURRENTTIME

但是

WRITE(*,*) TIMEDIR

输出*,它应该是0(CURRENTTIME是0.0000000)。我不知道问题出在哪里。

最佳答案

您将输出写入 float 。 float 总是有一个小数点或指数以区别于整数。因此, float 的最窄输出可能是 0.,即 2 个字符,并且 F1.0 的格式将始终导致打印“*”,因为字段宽度不足以容纳正在写入的内容。

关于fortran - 将实数写入字符串时输出为 '*',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41571450/

相关文章:

programming-languages - 编程语言中字母大写的经验法则

c++ - 如何从传递的数组中正确构造 CUSP coo 矩阵

c - 在 for 循环中使用 i 的历史是什么?

fortran - 品格申报表

fortran - 从整数转换为实数(dp)时自动分配失败

fortran - 我们还需要子程序吗?

如果存在对 MPI_Initialized 的调用,Fortran 程序将卡住

fortran - 将字符串内联传递给子例程调用(其中参数已定义长度)会产生意外结果

带有 os.chdir 和 c/fortran 程序的 python 线程

c++ - 通过围绕 C++ 接口(interface)创建 C 包装器,在 FORTRAN 中调用 C++ dll 文件