Ruby入門 數值

2021-08-27 22:24:34 字數 2713 閱讀 5146

整數

ruby內建的數值型別分為整數物件(integer)和浮點小數物件(float)。

在其他的語言中,整數的長度一般被限定在32bit或者62bit,在ruby的整數中,沒有這樣的限制,只要記憶體允許,任意無限長的整數都可以被使用。

例1

#正整數

p 1#負整數

p -2

#表明符號的正整數

p +1

#非常大的整數

p 1000000000000000000000000000000

#便於閱讀的格式,加了下劃線

p 100_000_000_000

記錄的數值一般來說都按十進位制來解釋。若需要二進位制、八進位制、十六進製制的數字時,需在開頭新增相應的記號

例2

#用0x表示十六進製制整數

p 0xdeadbeef

#負的十六進製制整數

p -0xcafe

#方便閱讀的長十六進製制整數

p 0xdead_beef_cafe_babe

#用0開頭的數表示八進位制整數

p 01755

#用0b開頭表示二進位制數

p 0b1010111

#輸出結果

#3735928559

#-51966

#16045690984503098046

#1005

#87

fixnum和bignum類

檢視整數物件的所屬類時,會發現並不屬於integer而是fixnum或者bignum這兩個類。

fixnum和bignum是integer的子類。

fixnum是內部用固定長度來實現的整數,能夠高效地處理比較小的整數。

bignum是多倍長度的整數,可以用來定義任意大的整數。

ruby在進行整數運算時,會自動區分是使用fixnum還是bignum。

例3

p 0x3fffffff.class

p (0x3fffffff+0x3fffffff).class

p 0x40000000.class

p (0x40000000-1).class

#輸出結果

#fixnum

#bignum

#bignum

#fixnum

浮點數

和其它語言一樣,ruby也使用浮點數來近似地表示一切實數。浮點數都是float物件。

數值運算

數值物件之間有各種各樣的運算。

例如,10+2

5.25-7

4*53**5(乘方)

除法運算

在ruby中根據運算物件的不同進行不同的操作。

如除法運算「/",兩邊同為integerdui物件,運算子」/「進行整除運算;若任意一方為float物件,則進行實數的除法運算。

例如,7/2  #整除

7.0/2  #實數間的除法運算

符號操作

例如,a = -3.0  #符號-表示負數

-a  #符號取反

優先順序優先順序用()來明確標定

其它運算子

例如,-7.divmod(2)  #對-7進行整除和求餘運算

-3.1416.abs  #取絕對值

0.5772.ceil  #大於或等於該數的最小整數

型別和自動轉換

ruby是對附屬型別要求很嚴格的程式語言,資料型別一般不會自動變換。

與perl等不同,1+」2「這樣的運算不會返回3而是會報錯。

字串不會自動地轉換為數值,型別的轉化需要使用方法to_i進行明確標明。

而整數和浮點數的運算會發生自動轉換是特例之一。

to_i  #變換為整數

to_f  #變換為浮點數

當需要用到更多的數值型別或代數系統時,只需要引入相應的類庫進行擴充套件即可。

比較ruby中的比較運算子有<,>,<=,>=,==,!=,<=>等。

其中<=>稱為宇宙飛船運算子。

運算子的左邊和右邊的值進行比較,

左邊《右邊,返回負值

左邊=右邊,返回0

左邊》右邊,返回正數

例如,1<=>2  #=>-1

2<=>2  #=>0

3<=>2  #=>1

宇宙飛船運算子主要用於排序。陣列等的sort方法一般預設用<=>運算子對各元素大小進行判定。

數學函式

例如,math.acos(x)  #反余弦函式

math.log(x)  #自然對數

對函式的呼叫一般不用」.「,而用」::「

math::sqrt(x)  #平方根

math::e  #自然對數的底

math::pi  #圓周率

如果math模組在作用域中被include,則可以對函式進行直接呼叫。

例如,include math

cos(0)

log10(2)

位元運算(位運算)

例,

a = 0b1100

b = 0b1010

#與運算

p a&b

#或運算

p a|b

#與或運算

p a^b

#非運算

p ~a

#左移運算

p a<<1

#右移運算

p a>>1

#負的左移運算

p a<<-1

#取位元位

p a[0]

ruby入門 方法

要注意引數,可變長度引數,和引數預設值 還有物件的特殊方法 class person def say1 word1,word2 puts word1 word2 end variable var def say2 word puts word end default var def say3 wor...

ruby入門 模組

模組 module 和類同一級 和類類似,但是不能例項化 可以被類包含 self可以指定模組方法 module demomodel def foo1 common method puts foo1.common method enddef self.foo2 module method puts f...

ruby 入門例項

usr bin ruby coding utf 8 coding utf 8 puts this is main ruby program puts puts file puts line 我是注釋 end begin 若包含中文編碼,則需要注意兩點 1.必須在首行新增 coding utf 8 告...