我有一个包含 500 个数字的列表,并且想要连续取其中每 10 个数字的平均值,从而创建一个包含 50 个数据点的输出文件。然后将进一步绘制。
但是假设在10的间隔内,所有10个数据都丢失了,即空白,那么我应该能够在输出文件中写入相应的空白。但是,如果我的输出数组是实数类型,那么我不能将其写为空白字符。
我什至尝试将输出数组创建为字符类型,但是,它显示出无法将实际值写入字符类型变量的问题。
我的问题有两点:-
有什么方法可以将实际变量存储为空白吗?
或者,如何将实数值存储到字符类型变量中?
我尝试了以下代码来测试:-
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/