我在我的fortran代码中生成大整数,用作我正在使用的随机数函数的种子。问题是我有几个这样的,我注意到有时生成的数字太大而且只是得到2147483647
,据我所知,这是fortran中整数的8位数限制。
我想通过将该数字的mod与该限制一起解决。我该如何实现这一目标?
答案 0 :(得分:1)
大多数Fortran编译器提供64位整数,它们将提供至少18位十进制数字。 (Fortran 2008要求支持64位整数。)您可以通过以下方式选择这些:
integer, parameter :: VeryLongInt_K = selected_int_kind (18)
integer (kind=VeryLongInt_K) :: variable
或者您可以使用ISO_FORTRAN_ENV
和int64
类型来选择64位整数:
use, intrinsic :: ISO_FORTRAN_ENV
integer (int64) :: variable
答案 1 :(得分:0)
只需使用更大的整数类型。
integer, parameter :: ip = selected_int_kind(number_of_digits_you_need)
integer(ip) :: var !all the integer variables that need to be large
整数将能够具有更大的值,mod
函数将生成相同类型的结果。