在real(16)类型的模型中,不是无穷大的最大数是10^4932。我有Fortran 90代码中的exp(10000),即用简单计算器计算的8.806818225×10^4342。我使用以下简单代码:
real(16) :: a
...
a = exp(10000)
...但它返回无穷大。我能做什么?
发布于 2016-10-07 08:47:24
首先,谁知道什么是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)是可能的方法之一。
https://stackoverflow.com/questions/39912690
复制相似问题