簡體   English   中英

實數的最小和最大浮點指數

[英]The minimum and maximum floating point exponent of a real number

如何獲得32位和64位實數的最小和最大指數? 我正在做一些工作來避免下溢和溢出,並且需要知道這些數字。

我還需要浮點數的基礎。

在fortran中是否有可能獲得ilmach的等效ilmach

函數range()返回指數范圍。 內在函數huge()返回給定數值類型的最大允許數。 由此,您也可以通過使用對數來查看指數。 另請參見selected_real_kind()

gfortran和其他普通編譯器的基礎是2,但是您可以使用radix()對其進行測試。 他們將來可能會以10為基數。

在我鏈接的同一本手冊中,您會發現其他有用的內在函數,例如tiny(), precision(), epsilon(), spacing() ,您可以按照“另請參見:”中的鏈接進行操作。

對於非零實數,數字模型看起來像s*b^e*\\sum_{k=1}^{p}f_k*b^{-k}

要獲取基數b的值,請使用radix() 指數e的最小和最大值可以通過將exponenttinyhuge相結合來找到。

use, intrinsic :: iso_fortran_env, only : real32, real64

print 1, "real32", RADIX(1._real32), EXPONENT(TINY(1._real32)), EXPONENT(HUGE(1._real32))
print 1, "real64", RADIX(1._real64), EXPONENT(TINY(1._real64)), EXPONENT(HUGE(1._real64))

1 FORMAT (A," has radix ", I0, " with exponent range ", I0, " to ", I0, ".")
end

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM