2011년 6월 2일 목요일

Standard Types : Numbers

Standard Types

Numbers

루비는 정수와 부동소수점(floating point number)을 지원한다. 정수는 길이에 상관없이 사용 가능하다. 일반적인 범위의 정수(-230~230-1, -262~262-1) 는 내부에서 이진 형태로 저장되고 Fixnum 클래스의 객체가 된다. 이 범위를 벗어나는 좀 더 큰 정수는 Bignum 클래스의 객체로 저장된다. 루비는 양방향의 변환을 자동으로 해준다.

num = 8
7.times do
print num.class, " ", num, "\n"
num *= num
end

>> Fixnum 8
>> Fixnum 64
>> Fixnum 4096
>> Fixnum 16777216
>> Bignum 281474976710656
>> Bignum 79228162514264337593543950336
>> Bignum 6277101735386680763835789423207666416102355444464034512896

정수를 표현할 때 숫자 앞부분에 적당한 부호를 붙일수도 있고 진법을 나타내는 특정 문자를 붙일 수도 있다.
8진수=0, 10진수=기본, 16진수=0x, 2진수=0b 그리고 정수 중간에 쓰인 밑줄은 무시된다.

puts 0xaabb
puts 0377
puts -0b101010

>> 43707
>> 255
>> -42

소 수점이나 지수를 포함하는 숫자 리터럴은 시스템 아키텍처에서는 Double에 해당하는 Float 객체로 변환된다. 소수점의 앞뒤에는 반드시 숫자가 와야 한다. 모든 숫자는 객체이므로 다양한 메시지를 처리할 수 있다. 정수 타입은 몇 가지 유용한 반복자를 지원한다. times, 숫자 사이를 반복하는 upto, downto, step 메서드가 있다.

3.times     { print "X " }
1.upto(5)   { |i| print i, " " }
99.downto(95)  { |i| print i, " " }
50.step(80, 5) { |i| print i, " " }

>> X X X 1 2 3 4 5 99 98 97 96 95 50 55 60 65 70 75 80

문자열을 숫자로 변환할 경우 Integer 클래스를 사용한다.

댓글 없음:

댓글 쓰기

블록체인 개요 및 오픈소스 동향

블록체인(block chain) 블록체인은 공공 거래장부이며 가상 화폐로 거래할때 발생할때 발생할 수 있는 해킹을 막는 기술. 분산 데이터베이스의 한 형태로, 지속적으로 성장하는 데이터 기록 리스트로서 분산 노드의 운영자에 의한 임의 조작이 불가...