Fortran的數(shù)字由三個內(nèi)部數(shù)據(jù)類型來表示:
整數(shù)類型只能容納整數(shù)值。下面的例子中提取的是持有一個通常的4字節(jié)整數(shù)的最大值:
program testingInt implicit none integer :: largeval print *, huge(largeval) end program testingInt
當(dāng)編譯并執(zhí)行上述程序,將產(chǎn)生以下結(jié)果:
2147483647
請注意,huge()函數(shù)給出能夠由特定的整數(shù)數(shù)據(jù)類型可以保持的最大數(shù)字。還可以指定使用的那種符的字節(jié)數(shù)。下面的例子說明了這一點(diǎn):
program testingInt implicit none !two byte integer integer(kind=2) :: shortval !four byte integer integer(kind=4) :: longval !eight byte integer integer(kind=8) :: verylongval !sixteen byte integer integer(kind=16) :: veryverylongval !default integer integer :: defval print *, huge(shortval) print *, huge(longval) print *, huge(verylongval) print *, huge(veryverylongval) print *, huge(defval) end program testingInt
當(dāng)編譯并執(zhí)行上述程序,將產(chǎn)生以下結(jié)果:
32767 2147483647 9223372036854775807 170141183460469231731687303715884105727 2147483647
它存儲的浮點(diǎn)數(shù),例如 2.0,3.1415,-100.876等
傳統(tǒng)上有兩種不同類型的實(shí)型:缺省的實(shí)型和雙精度型。
然而,F(xiàn)ortran 90/95提供了更多的控制權(quán)實(shí)數(shù)和整數(shù)數(shù)據(jù)類型,通過一種說明,我們將在較短期內(nèi)學(xué)習(xí)研究精度。
下面的例子展示了如何使用實(shí)型的數(shù)據(jù)類型:
program division implicit none ! Define real variables real :: p, q, realRes ! Define integer variables integer :: i, j, intRes ! Assigning values p = 2.0 q = 3.0 i = 2 j = 3 ! floating point division realRes = p/q intRes = i/j print *, realRes print *, intRes end program division
當(dāng)編譯并執(zhí)行上述程序,將產(chǎn)生以下結(jié)果:
0.666666687 0
這被用于存儲復(fù)數(shù)。一個復(fù)雜的數(shù)字有兩部分:實(shí)部和虛部。兩個連續(xù)的數(shù)字存儲單元存儲兩個部分。
例如,該復(fù)數(shù)(3.0,-5.0)等于3.0 - 5.0i
通用函數(shù)cmplx() 創(chuàng)建一個復(fù)數(shù)。它產(chǎn)生的結(jié)果是實(shí)部和虛部,不論輸入?yún)?shù)的類型的單精度。
program createComplex implicit none integer :: i = 10 real :: x = 5.17 print *, cmplx(i, x) end program createComplex
當(dāng)編譯并執(zhí)行上述程序,將產(chǎn)生以下結(jié)果:
(10.0000000, 5.17000008)
下面的程序演示的復(fù)雜數(shù)字運(yùn)算:
program ComplexArithmatic implicit none complex, parameter :: i = (0, 1) ! sqrt(-1) complex :: x, y, z x = (7, 8); y = (5, -7) write(*,*) i * x * y z = x + y print *, "z = x + y = ", z z = x - y print *, "z = x - y = ", z z = x * y print *, "z = x * y = ", z z = x / y print *, "z = x / y = ", z end program ComplexArithmatic
當(dāng)編譯并執(zhí)行上述程序,將產(chǎn)生以下結(jié)果:
(9.00000000, 91.0000000) z = x + y = (12.0000000, 1.00000000) z = x - y = (2.00000000, 15.0000000) z = x * y = (91.0000000, -9.00000000) z = x / y = (-0.283783793, 1.20270276)
整數(shù)的范圍內(nèi),精度和浮點(diǎn)數(shù)的大小取決于分配給該特定數(shù)據(jù)類型的比特數(shù)。
下表顯示的位數(shù)和范圍的整數(shù):