在Fortran中将两个整数连接到整数的最佳方法是什么?
integer a = 999
integer b = 1111
integer c
应为9991111
谢谢, SM。
答案 0 :(得分:8)
以下示例代码可以满足您的需求。它将整数写入字符串,修剪并连接它们,然后从连接的字符串中读取结果整数:
integer :: a,b,c
character(len=99) :: char_a,char_b,char_c
a = 999
b = 1111
write(unit=char_a,fmt=*)a
write(unit=char_b,fmt=*)b
char_c = trim(adjustl(char_a))//trim(adjustl(char_b))
read(unit=char_c,fmt=*)c
print*,c
end
编辑:请注意,此示例对于任何整数长度都是通用的,假设它们适合各自的kind
(无整数溢出)。
答案 1 :(得分:2)
您可以使用数字顺序的信息:
integer :: a = 999
integer :: b = 1111
integer :: c
c = a * 10**(ceiling(log10(real(b)))) + b
write(*,*) c
答案 2 :(得分:0)
最好的办法是使用internal files将两个整数转换为一个字符,然后将其转换回整数。
没有将数值转换为字符/字符串表示的内在过程。有关更多信息,请参阅Fortran Wiki上的this discusson(参见“注意”部分)。
例如,在您的情况下,您可以使用以下内容:
program test_conversion
implicit none
integer :: a=999
integer :: b=1111
integer :: c
character(len=7) :: temp
write(temp, '(i3.3, i4.4)') a, b ! You may need to change these format specifiers
read(temp, *) c
print*, c ! This prints 9991111
end program test_conversion
如果想要整数字符表示的宽度不同,则必须更改格式字符串。