real(16)
类型模型中不是无穷大的最大数字是10 ^ 4932。 Fortran 90代码中exp(10000)
为8.806818225×10 ^ 4342,由简单计算器计算得出。我使用这个简单的代码:
real(16) :: a
...
a = exp(10000)
...
但它会返回无穷大。我该怎么办?
答案 0 :(得分:1)
首先,谁知道什么是real(16)
,那种数字不可移植,可能意味着什么。
但是,让我们说你想要使用实物16,无论它实际是什么。然后你必须将实物16的真实存入exp函数
a = exp(10000._16)
在Fortran中,表达式从不关心周围环境。 exp(10000)
在所有上下文中都以相同的方式独立评估。你在那里放了一个默认的整数,你得到了默认的真实答案。答案对于默认真实来说太大了。
我强烈建议使用一些正确的方法来定义你的种类,而不仅仅是16。
use iso_fortran_env
integer, parameter :: rp = real128
real(rp) :: a
a = exp(10000._rp)
是可能的方法之一。