官术网_书友最值得收藏!

2.5 Julia中的算術和邏輯運算

本節介紹Julia中的算術和邏輯運算,這與其他編程語言類似。

2.5.1 執行算術運算

在Julia中執行算術運算十分簡單。Julia提供了一整套運算符,比如最常用的二元運算符:+、?、*、/、^和%。

【范例2-21】算術運算

01  julia> a = 10; b = 20; a + b
02  30

代碼01行定義了兩個變量a和b,它們的值分別為10和20,然后進行a+b運算,結果為30。

如下代碼使用一元運算符來反轉數字。

01  julia> -4
02  -4
03  julia> -(-4)
04  4

有一個特殊的操作成員“!”,它可以與布爾類型(Bool)一起使用,用于執行否定操作。

01  julia> !(4>2)
02  false

在代碼01行中,4>2的結果為true,通過“!”運算符將輸出false。

2.5.2 執行按位運算

如表2-3所示為一些不常用的運算符,用于執行按位運算。

表2-3 不常用的運算符

下面舉例說明。

【范例2-22】執行按位運算

01  julia> 100 | 200
02  236
03  julia> ~100
04  -101

在代碼01行中,對100和200執行按位或運算,結果為236。代碼03行將100按位取反,結果為?101。

2.5.3 自更新運算符

Julia也提供了一些自更新運算符,包括:+=、?=、*=、/=。

【范例2-23】自更新運算符

01  julia> x = 4; x += 10   #自增運算
02  14
03  julia> x = 4; x/=2    #自除運算
04  2.0

代碼01行定義了一個變量x,其值為4,并通過“+=”自增運算符,x自增10,結果為14。代碼03行的操作方法與01行類似。

在范例2-23中,x的類型從Int變為Float,是因為自更新運算符將值提升為左側的變量類型。

Julia還提供了一些比較運算符,如==、!=、<、<=、>、>=等。

【范例2-24】比較運算符的使用

01  julia> 100 > 99.9
02  true
03  julia> 24 == 24.0
04  true
05  julia> 24 === 24.0
06  false
07  julia> 24 !== 24.0
08  true

在代碼01行中,100>99.9,返回true。后面的代碼與01行類似。代碼05行中的“===”表示強相等,要求不僅值相等,其類型也需要相同。雖然24與24.0值相等,但是它們的類型不同,所以返回false。

NaN不等于任何值,甚至不等于其本身。

01  julia> NaN == NaN
02  false
03  julia> NaN === NaN
04  true
05  julia> Inf == Inf
06  true
07  julia> Inf >= NaN
08  false

在代碼01行中,NaN與NaN比較結果為false。代碼05行中的Inf表示最大值,值相等及類型相同,所以返回true。代碼07行Inf與NaN比較結果為false,因為NaN不與任何值相等,包括它自己。

2.5.4 運算符的優先級

Julia的運算符有優先級,它們從高到低的順序如表2-4所示。

表2-4 運算符的優先級

2.5.5 類型轉換(數字)

類型轉換是指更改變量的類型,但保持變量的值不變。

【范例2-25】類型轉換

01  julia> Int8(100)    #創建一個字長為8位的值
02  100
03  julia> Int8(100*10)
04  ERROR: InexactError() in Int8(::Int64) at ./sysimg.jl:53
05  julia> Int16(100*10)   #這個數被解釋為16位
06  1000
07  julia> x = Int32(40); typeof(x)   #創建一個Int32類型的變量x
08  Int32
09  julia> x = Int8(x); typeof(x)   #使用類型轉換,轉換為8位的Int8
10  Int8

代碼01行使用Int8()函數創建了一個字長為8位的值,沒有錯誤。代碼03行創建了一個Int8類型的值1000,但是由于1000超出了Int8類型的最大值,所以該行代碼將報錯。但是如果將其解釋為Int16類型的值則不會報錯。代碼07行創建了一個Int32類型的變量x,求x的類型,結果為Int32。代碼10行通過Int8()函數將x轉換為Int8類型的變量。

主站蜘蛛池模板: 盐源县| 奉新县| 宣化县| 镇赉县| 宁明县| 昌江| 遂川县| 体育| 漯河市| 嵊州市| 白朗县| 巴楚县| 嘉定区| 措美县| 论坛| 榆树市| 天门市| 洱源县| 涞水县| 赤峰市| 蛟河市| 墨江| 开江县| 盐津县| 思南县| 措美县| 大方县| 麻城市| 临漳县| 泸定县| 西华县| 临江市| 三原县| 阜康市| 衡阳市| 岢岚县| 丰台区| 二连浩特市| 台安县| 永德县| 偃师市|