目前我正在复习我的 Fortran95 知识(不要问为什么)...
我遇到了一个问题。如何处理大整数,例如。大小:~700000000000
INTEGER(KIND=3) 不能容纳这个数字。
如果有人对我可用的编译器感兴趣,那就是 Silverfrost FTN95。
我正在使用整数来运行更大的数据集。
你有什么建议吗?
最佳答案
标准解决方案(自 Fortran 95 起,所以我假设您的编译器支持它)是使用 SELECTED_INT_KIND
固有的探测有效整数类型(其值取决于编译器)和 HUGE
固有的。
SELECTED_INT_KIND (R)
返回整数类型的 kind 类型参数,该类型参数表示所有整数值 n,其中 -10^R < n < 10^R(如果不存在此类类型,则返回 -1)。 HUGE (K)
返回 K 类整数类型中最大的可表示数。例如,在我的带有 x86_64 处理器(gfortran 编译器,64 位模式)的 Mac 上,以下程序:
print *, selected_int_kind(1)
print *, selected_int_kind(4)
print *, selected_int_kind(8)
print *, selected_int_kind(16)
print *, selected_int_kind(32)
print *, selected_int_kind(64)
print *, huge(0_1)
print *, huge(0_2)
print *, huge(0_4)
print *, huge(0_8)
print *, huge(0_16)
end
输出:
1
2
4
8
16
-1
127
32767
2147483647
9223372036854775807
170141183460469231731687303715884105727
这告诉我我会使用
integer(kind=8)
为你的工作。
关于integer - Fortran:处理大小的整数值:~700000000000,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2390395/