我正在尝试使用大数(~10 ^ 14),我需要能够存储它们并迭代那个长度的循环,即
n=SOME_BIG_NUMBER
do i=n,1,-1
Run Code Online (Sandbox Code Playgroud)
我尝试了通常的星形符号kind=8等,但似乎没有任何效果.然后我检查了huge内在函数和代码:
program inttest
print *,huge(1)
print *,huge(2)
print *,huge(4)
print *,huge(8)
print *,huge(16)
print *,huge(32)
end program inttest
Run Code Online (Sandbox Code Playgroud)
在所有情况下产生数字2147483647.为什么是这样?我在64位机器上使用gfortran(f95).
如果我需要一个bignum图书馆,人们会建议哪一个?
我想查看 gfortran 的整数种类
所以我写了这一行
write(*,"(1X,I20,'correspond to kind ',I2)"),11111111111,kind(11111111111)
Run Code Online (Sandbox Code Playgroud)
会有编译错误说
test.f90:67:57 类型的精度:错误:整数对于 (1) 处的同类来说太大了。可以使用选项 -fno-range-check 禁用该检查
所以我尝试用-fno-range-check. 但它给出了结果
-1773790777对应种类4
怎么了?另一方面,intel fortran 没有给出错误和正确答案