Integer的常用函数
ruby中的Numeric子类有Integer和Float,Integer根据长度可以分为Fixnum(普通整数)和Bignum(大整数),程序中使用的整数大小一般是Fixnum类,即便超过了Fixnum的处理范围,也会自动转化成Bignum处理,所以写程序几乎不必特别去在意这些整数类的差异
1、 Numeric的算术运算
数值之间可以进行加(+),减(-),乘(*),除(/),求余(%),乘幂(**)运算,但是要注意:
Integer +Float #=> Float,
Integer +Integer #=> Integer,
Float+Float #=> Float
其他类的除法:
e.g.
1、x.divmod(y)
# 以数组返回x除以y的商与余数。“商”是“x除以y”的结果往小的方向取最接近的整数;余数则是与y同号的值。余数的结果等于“x%y”。 ans =x.divmod(y) ,反之,x == ans[0]*y +ans[1]
2、x.modulo(y)
# 等同于"x%y"
3、x.remainder(y)
# 返回x除以y的余数,但余数会与“x”同号
注意: 除以0的时候,Integer类会作为错误处理,但Float类则会返回Infinity(无限大)或NaN(Not a Number)。
2、 Math模块
Math模块的使用,可以明确指定模块的名称(Math.sqrt(2)),也可以通过include Math读取进来(include Math).
Math模块提供的方法:正弦函数 sin(x), 余弦函数 cos(x), 正函数 tan(x), 反正弦函数 asin(x), 反余弦函数 acos(x), 反正切函数 atan(x), 指数函数 exp(x), 自然对数 log(x), 常用对数 log10(x), 平方根 sqrt(x)
Math模块提供的常数:圆周率(3.1415926...) PI, 自然对数的底 e(2.7182818...) E
3、 数值类型的转换
1、IntegerObject.to_f
#=> FloatObject 将整形转化为浮点型
2、 FloatObject.to_i
#=>IntegerObject #直接去掉小数点以下的值
3、 round:四舍五入
e.g.
p1.2.round #=> 1 ,
p 1.8.round #=>2,
p -1.2.round #=> -1,
p -1.8.round #=> -2
ceil:向上取整
floor:向下取整
4、 迭代器
1、n.times
n.times{|i| putsi}
# 重复执行n次,参数 i 的值依次会是0到n-1
2、from.upto
from.upto(to){|i|puts i}
# 从from数到to为止不断相加,如果from大于to则一次也不数
3、from.downto
from.downto(to){|i|puts i}
# 从from数到to为止不断相减,如果from小于to则一次也不数
4、from.step
from.step(to, step){|i| puts i}
# 从from开始,每次加上step,直到数到to为止。当step为正值且from大于to时,则一次也不数;当step为负值且from小于to时,则一次也不数
e.g.
ary = []
2.step(10, 3){|i| ary << i}
p ary #=> [2,5, 8]