数值类
数值类的构成
Numeric
Integer(整数)
Fixnum(普通整数)
Bignum(大整数)
Float(浮点)
Rational(有理数)
Complex(复数)
整数
p 1024.class
#=> Fixnum
p (2**1000).class
#=> Bignum
有理数
a = Rational(2, 5)
b = Rational(1, 3)
p a
#=> (2/5)
p b
#=> (1/3)
c = a + b
p c
#=>(11/15)
p c.to_f
#=> a = Rational(2, 5)
b = Rational(1, 3)
p a
#=> (2/5)
p b
#=> (1/3)
c = a + b
p c
#=>(11/15)
p c.to_f
#=> 0.733333333333333
复数
#Complex(实数, 虚数)
c = Complex(0, 2) ** 2
p c
#=> (-4+0i)
Math模块
其实就是各种正弦,余弦函数
p Math.sqrt(2)
数值类型转换
p 10.to_f
p 10.8.to_i
p "123".to_i
p "12.3".to_f
#对小数部分四舍五入
p 1.2.round
p 1.8.round
#比接受者大的最小整数
p 1.5.ceil
#=> 2
#比接受者小的最小整数
p 1.5.floor
#=> 1
随机数
#返回比1小的浮点数
p Random.rand
#返回0-100之间的数
p Random.rand(100)
#指定范围
p Random.rand(100000..999999)
计数
n.times{|i|...}
ary = []
10.times do |i|
#相当于php的 ary[] = i
ary << i
end
p ary
from.upto(to){|i|...}
ary = []
#(2..10).each
2.upto(10) do |i|
ary << i
end
p ary
from.downto(to){|i|...}
ary = []
#10~2,注意10..2不能用
10.downto(2) do |i|
ary << i
end
p ary
form.step(to, step){...}
ary = []
2.step(10, 3) do |i|
ary << i
end
p ary
#=> [2, 5, 8]
ary = []
10.step(2, -3) do |i|
ary << i
end
p ary
#=> [10, 7, 4]
collect
ary = 2.step(10).collect{ |i| i * 2 }
p ary
#=> [4, 6, 8, 10, 12, 14, 16, 18, 20]