fortran - 如何在Fortran中将实数设置为空白?

标签 fortran gfortran

我有一个包含 500 个数字的列表,并且想要连续取其中每 10 个数字的平均值,从而创建一个包含 50 个数据点的输出文件。然后将进一步绘制。

但是假设在10的间隔内,所有10个数据都丢失了,即空白,那么我应该能够在输出文件中写入相应的空白。但是,如果我的输出数组是实数类型,那么我不能将其写为空白字符。

我什至尝试将输出数组创建为字符类型,但是,它显示出无法将实际值写入字符类型变量的问题。

我的问题有两点:-

  1. 有什么方法可以将实际变量存储为空白吗?

  2. 或者,如何将实数值存储到字符类型变量中?

我尝试了以下代码来测试:-

real r
r=''
write(*,*) r

输出“r”显示一些实际值。

对于有人建议我应该将输出直接写入文件,我必须告诉,我需要该输出数组来对其进行进一步的处理。

最佳答案

Fortran 实数始终是一个数字,最常见的是 IEEE 浮点格式 https://en.wikipedia.org/wiki/IEEE_754 。有一些特殊值,例如非数字(NaN)和+无穷大(+Inf,-Inf),但它们也不会输出为空白。

如果我理解正确的话,你基本上想要某种 Option type .

您必须检查该数字是否包含此特殊值,如果是则输出空白

  if (ieee_is_nan(r)) then
    write(*,*)
  else
    write (*,*) r
  end if

或者你将不得不使用一些更复杂的类型

  type my_type
    real value
    logical is_blank =.false.
  end type

或者您必须使用可分配的实数变量,如果它为空,则不分配它

  if (.not. allocated(r)) then
    write(*,*)
  else
    write (*,*) r
  end if

关于fortran - 如何在Fortran中将实数设置为空白?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55555871/

相关文章:

Python/Cython/Fortran 模块 - undefined symbol : _gfortran_runtime_error

excel - 在 Excel 365/VBA 7 中使用 gFortran dll

fortran - 这个 1977 年之前的 Fortran 程序中的参数中的参数是什么意思?

linux - Windows 下 Cygwin 的执行速度比 VirtualBox 中 Linux 的执行速度慢

fortran - 错误 #6404 : This name does not have a type, 并且必须具有显式类型

module - Fortran 中 INCLUDE 和模块之间的区别

c++ - 如何将 Vector 从 C++ 传递到 Fortran?

compiler-errors - 模块和旧版 Fortran 77 代码

fortran - Fortran 中不同形状的可分配项的赋值

c - 对主要 Fortran 程序的 undefined reference