Fotran函数num2str

问题描述 投票:0回答:1

我正在尝试创建一个接受数字并返回该数字的字符串表示形式的函数。这是我尝试过的:

  program test
  print *, num2str(9.0)
  end

  character(len=128) function num2str(num)
     real num
     write(num2str,*) num
  endfunction

但是这会返回错误:

num2str.f:1.22:

      print *, num2str(9.0)                                             
                      1
Error: Return type mismatch of function 'num2str' at (1) (INTEGER(4)/CHARACTER(1))

我该如何解决这个问题?

string function fortran numbers
1个回答
1
投票

与子例程不同,您需要在program范围内导入或声明函数接口。

选项1

明确声明接口:

program test
  interface
     character(len=128) function num2str(num)
       real num
     end function num2str
  end interface
  print *, num2str(9.0)
end

character(len=128) function num2str(num)
  real num
  write(num2str,*) num
endfunction

选项2

将函数放入程序contains部分,该部分将自动生成接口:

program test
  print *, num2str(9.0)
contains
  character(len=128) function num2str(num)
    real num
    write(num2str,*) num
  endfunction
end

选项3

在模块内部定义功能,并将该模块导入program test

module m
contains
  character(len=128) function num2str(num)
    real num
    write(num2str,*) num
  endfunction num2str
end module m

program test
  use m
  print *, num2str(9.0)
end
© www.soinside.com 2019 - 2024. All rights reserved.