Ruby:Fixnums and Bignums

From Blognone

Revision as of 13:46, 19 April 2008 by Apirak (Talk | contribs)
(diff) ←Older revision | Current revision (diff) | Newer revision→ (diff)
Jump to: navigation, search

Object สำหรับเลขจำนวนเต็มใน Ruby มีสองตัวคือ Fixnums และ Bignum สำหรับตัวแปลที่มีจุดทศนิยมเช่น 7.5, 3.14.159 หรือ 10.0 จะเป็น Float แม้ว่าใน Ruby ตัวแปลสามารถเปลี่ยนชนิดได้ทันที (Dynamic type)

สำหรับการหารจำนวนเต็มสองจำนวน ผลลัพท์ไม่ได้เป็น Float แต่เป็นจำนวนเต็มและไม่ปัดเศษให้ด้วย

6/3 => 2
7/3 => 2
8/3 => 2
9/3 => 3

ตัวแปล Fixnums มีขนาด 31 bits (ลองคำนวนตัวต่ำสุดสูงสุดดูนะครับ) สำหรับ Bignum เราสามารถใส่ค่าได้ไม่จำกัดครับ (ใช้ได้เต็มที่เท่าหน่วยความจำที่ให้ Ruby ครับ)

แม้ว่าการหารจำนวนเต็มสองจำนวนจะไม่กลายเป็น Float แต่สามารถเปลี่ยน Fixnum -> Bignum หรือ Bignum -> Fixnum ได้

2 => Fixnum
437 => Fixnum
2**437 => Bignum
1234567890 => Bignum
1234567890/1234567890 => is 0, is Fixnum

ใน Ruby ไม่มี a++ หรือ a-- ให้นะครับ เราจะใช้ +=, -=, *=, /= แทน

a=4
a += 1 # a is now 5
a -= 2 # a is now 3
a *= 4 # a is now 12
a *= 2 # a is now 6

a += 1 มีค่าเท่ากับ a = a+1