2 Perl 數字標量

2021-05-23 22:34:05 字數 2461 閱讀 7979

2.1 數字

雖然標量在大多數情況下不是數字就是字串,現在我們最好還是將它們分開來看待。我們首先討論數字,再討論字串。

2.1.1 所有數字內部的格式一致

在下面幾段中,你將看到整數(如255,2001 等)和浮點數(有小數點的實數,如3.14159,1.35x1025),但在內部,perl 都把

它們當作雙精度浮點數來處理◆。這就是說在perl 內部沒有整數值。程式中的整數被當做等價的浮點數來處理◆。你也許

注意不到這種轉換(或者不關心),但你不應當尋找只屬於整數的操作符(不能被浮點數使用的),因為它們不存在◆。

◆雙精度浮點型別類似於c 中由double 定義的型別。它們的大小可能和具體的機器相關,許多當代的系統都使用ieee-754 的格式,它有15

位精度,其範圍至少在1e-100 到1e100 之間。

◆有時,perl 也會使用內部的整數,其對程式設計師不可見。這樣做導致的唯一不同是,程式將執行更快。誰又能抱怨它呢?

◆perl 中有integer pragma.但如何使用它超出了本書的範圍。正如你將看到的,某些操作可以從浮點數得到整數。但那不是我們此刻討論的問題。

2.1.2 浮點數

數字符號(literal)是perl 程式源**中代替某個值的方法。數字符號不是計算或i/o 操作的結果,它是直接寫進**中的

資料。你可能已經很熟悉perl 的浮點數。有或沒有小數點的數字都是允許的(包括+或-號),也可帶乙個十進位制的指數(符號為e)。

1.25

255.000

255.0

7.25e45 #7.25x10 的45 次方(乙個大整數)

-6.5e24 # -6.5x10 的24 次方(乙個絕對值很大的負數)

-12e-24 #- -12x10 的-24 次方(乙個絕對值很小的負數)

-1.2e-23 #指數符號可以大寫(e)

2.1.3 整數

整數是簡單明瞭的:

02001

-40255

61298040283768

最後乙個讀起來有些困難。perl 允許用下劃線來分隔它,因此可以像下面這樣書寫:

61_298_040_283_768

它們是相同的值,但形式上有些不同。你可能認為逗號(,)更恰當,但逗號在perl 中有其它用途(下一章中將介紹)。

2.1.4 非十進位制整數

同許多其它語言一樣,perl 也允許使用非10 為底的數字。八進位制以0 開頭,十六進製制以0x 開頭,二進位制0b 開頭◆。在十

六進製制中a 到f(或者a 到f)分別表示10 到15:

◆「前置0」指示符只對數字有效,對由字串轉換過來得數字無效,在本章後面你可以看到。可以利用oct()或hex()把某個看起來像八

進製或十六進製制的資料串轉換成數字。雖然沒有「二進位制」(bin)函式來轉換二進位制的值,如果某個字串以0b 開頭可由oct()做到。

0377 #八進位制數字377,等同於十進位制數字255

0xff #十六進製制數字ff,等同於十進位制數字255

0b11111111 #等同於十進位制數字255

這些數字表面上看起來並不相同,但這三個數在perl 中都代表同乙個數。對於perl 來講,0 xff 或255.00 是沒有區別的,

因此選擇一種你和你的程式維護者(我們是指那個要讀懂你**的可憐夥計。通常,這個可憐的傢伙就是你,你很可能想

不起3 個月前,你為什麼要那樣做)認為最有意義的一種。

當乙個非十進位制的數字超過4 位時,讀起來將很困難。由於這個理由,perl 允許你使用下劃線來區分:

0x1377_0b77

0x50_65_72_7c

2.1.5 數字操作符

perl 除了提供通常的操作符加(+),減(-),乘(*),除(/)等等之外:

2+3 #2+3,5

5.1-2.4 #5.1-2.4,2.7

3*12 #3*12,36

14/2 #14/2,7

10.2/0.3 #10.2/0.3,34

10/3 #通常是浮點除,3.33333… …

還提供了模數運算子(%)。10%3 的值是10 除以3 的餘數。兩個運算元首先變成它們對應的整數值,如10.5%3.2 轉換為

10%3◆後再計算。另外,perl 中提供了和fortran 類似的指數操作符,c 和pascal 很希望有類似的能力。這個操作符由

兩個*號表示,如2**3,表示2 的3 次方,等於8◆。我們將在需要的地方介紹其它的數字操作浮。

◆注意,在模數運算中,如果有乙個運算元為負數,那其結果和perl 的具體實現相關。

◆通常不能進行乙個負數的非整數次方的運算。對數學有一定了解的讀者知道,這將產生乙個複數(數學概念中的複數:如1+2i,譯註)。

如果想進行類似的預算,你需要math::complex 這個模組

2 Perl 標量資料概述

在英語以及許多其它的語言中,需要區別單數和複數。作為一門由語言學家發明的語言,perl 也是類似的。同一般情況一樣,perl 也有資料型別 標量 標量是perl 中最簡單的資料型別。大多數的標量是數字 如255 或3.25e20 或者字串 如hello 或者蓋茨堡位址 你也許把數字和字串看作不同的事...

指令碼入門(2) perl指令碼

一 注釋 pod 這裡的是注釋 cut 二 chomp 去掉換行符 n 去掉 chomp text 讀入,但不含換行符 三 line 一次讀一行,效能好。會帶有換行符,通常都會加上chomp 操作符去掉換行符,四 鑽石尖括號 使用兩個尖括號表示讀取來自檔案的輸入,可以從命令列中傳遞檔案到 當不注釋掉...

perl自學2 標量資料 20150313

今天閱讀的是 perl語言入門 的第二章 1 34頁 單引號和雙引號中的反斜線含義是不同的。單引號中,反斜線只有兩種情況為轉義 和 前者表示反斜線自身,後者表示單引號。n 為兩個字元,反斜線和n。但是我不明白,如果是表示反斜線的話為什麼不雙反斜線轉義呢?而在雙引號中,n表示換行,t表示製表符。bun...