日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Julia程序设计2 数值类型

發布時間:2025/4/14 编程问答 19 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Julia程序设计2 数值类型 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Julia程序設計2 數值類型

  • 實數
    • 整數
    • 浮點數
    • 數值類型的轉換
    • 有理數與無理數
  • 復數

Julia的數值類型與其他語言一般無二,這里有張總結的圖:

Julia數值類型分為實數和復數兩大類,下面分別介紹。

實數

整數

Julia中整型數據分為四大類,BigInt,Bool和Signed,Unsigned。

UInt是Unsigned Integer的縮寫,后面的數字表示精度,比如UInt32表示32-bit的Unsigned整型數據,UInt128表示128-bit的整型數據。Unsigned的含義是第一個bit不表示符號,所以精度為xxx的UInt變量可以表示0~2x?10 \sim 2^x-102x?1的整數,比如UInt8可以表示0~255的整數。

Int表示Signed整型數據,后面的數字同樣表示精度,但第一個bit表示整數的符號,第一位是1表示負號,第一位是0表示正號,因此精度為xxx的Int變量可以表示?2x?1~+2x?1-2^{x-1} \sim +2^{x-1}?2x?1+2x?1的整數。Bool就是邏輯值,BigInt表示任意精度的整型數據。

Julia中typeof()函數返回整數的類型,整型數據默認精度與操作系統位數一致,64位的Windows系統默認整數類型是Int64

julia> typeof(1) Int64

用typemin()和typemax()函數可以返回某個類型能夠表示的數值范圍:

julia> for T = {Int8,Int16,Int32,Int64,Int128,Uint8,Uint16,Uint32,Uint64,Uint128}println("$(lpad(T,7)): [$(typemin(T)),$(typemax(T))]")endInt8: [-128,127]Int16: [-32768,32767]Int32: [-2147483648,2147483647]Int64: [-9223372036854775808,9223372036854775807]Int128: [-170141183460469231731687303715884105728,170141183460469231731687303715884105727]Uint8: [0,255]Uint16: [0,65535]Uint32: [0,4294967295]Uint64: [0,18446744073709551615] Uint128: [0,340282366920938463463374607431768211455]

浮點數

浮點數有四種類型:半精度浮點數(Float16)、單精度浮點數(Float32)、雙精度浮點數(Float64)、任意精度浮點數(BigFloat),用函數typeof()也可以返回浮點數的精度

julia> typeof(1.0) Float64

另外precision()函數可以返回浮點數的有效數字位數

julia> precision(Float16) 11julia> precision(Float32) 24julia> precision(Float64) 53julia> precision(BigFloat) 256julia> precision(1.0) 53

半精度、單精度、雙精度浮點數用來表示指數部分的bits數分別為5、8、11,假設表示指數部分的位數為yyy,精度為xxx,則表示的浮點數范圍為?2x?y×2y~+2x?y×2y-2^{x-y}\times 2^y \sim +2^{x-y}\times 2^y?2x?y×2y+2x?y×2y,比如Float32,第0-22個bit表示小數部分,23-30個bit表示指數部分,第31個bit表示符號,例如

0.15625的符號為+,因此第31個bit填0,用乘2取整法確定0.15625的二進制表示為:0.00101,用科學計數法可以表示為1.01×2?31.01 \times 2^{-3}1.01×2?3,小數部分是1.01,IEEE默認格式是1.xxxxx,因此實際存小數點后的部分即可,因此第22、21位填入0、1,其余部分是0;指數部分是-3,因為指數部分是UInt8,為了表示負整數,IEEE規定指數需要加127(有符號時Int8表示的范圍是-128到+128),具體計算可以用-3加127換成二進制1111100,然后填入第29-23個bit,也可以用-3(10000011)取移碼(補碼取相反數)01111101再減1得到(01111100)。如果數值超出了某個類型能表示的最大/最小值就會溢出,因此某個類型能表示的最小值被稱為某個數值類型的機器誤差,用eps()可以返回某個類型的機器誤差的值

julia> eps(Float16) Float16(0.000977)julia> eps(Float32) 1.1920929f-7julia> eps(Float64) 2.220446049250313e-16julia> eps(BigFloat) 1.727233711018888925077270372560079914223200072887256277004740694033718360632485e-77

數值類型的轉換

整型轉換為浮點型有兩種方法,并且由整型轉換為浮點型的數還可以轉換回來:

julia> a = 1 1julia> typeof(a) Int64julia> a1 = Float32(a) 1.0f0julia> typeof(a1) Float32julia> a2 = convert(Float32,a) 1.0f0julia> typeof(a2) Float32julia> a3 = Int64(a1) 1julia> typeof(a3) Int64

浮點數轉換類似,但本來就是浮點數的變量不能直接用類型轉換變成整型,需要用取整函數,否則會報錯:

有理數與無理數

有理數ab\frac{a}{b}ba?的分號在Julia中用符號\表示,它的數值類型由整數a,ba,ba,b的類型決定,如果輸入的分式不是最簡的Julia會自動約分

julia> typeof(2//3) Rational{Int64}

有理數轉換成浮點數之后和它本身的值還是相等的

julia> a = 1//3 1//3julia> a - float(a) 0.0

復數

虛數單位是im,real()與imag()分別返回復數的實部與虛部

julia> a = 2 + 2im 2 + 2imjulia> real(a) 2julia> imag(a) 2

定義復數還可以用complex()函數,比如

julia> complex(2,2) 2 + 2imjulia> a = 2 2julia> b = 2 2julia> complex(a,b) 2 + 2im

復數的類型是由實部和虛部的類型決定的

julia> typeof(complex(a,b)) Complex{Int64}

復數的模、輻角、共軛、模的平方分別可以用abs(), angle(), conj(), abs2()計算

julia> z = 2+im 2 + 1imjulia> abs(z) 2.23606797749979julia> conj(z) 2 - 1imjulia> angle(z) 0.4636476090008061julia> abs2(z) 5

上一講的數學符號也可以用來做復數的計算。

總結

以上是生活随笔為你收集整理的Julia程序设计2 数值类型的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。