Ruby Integer的常用函数

来源:互联网 发布:服装贴牌 知乎 编辑:程序博客网 时间:2024/05/17 21:41

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]