Ruby入门——数值

整数

Ruby内置的数值类型分为整数对象(Integer)和浮点小数对象(Float)。

在其他的语言中,整数的长度一般被限定在32bit或者62bit,在Ruby的整数中,没有这样的限制,只要内存允许,任意无限长的整数都可以被使用。

例1

#正整数
p 1
#负整数
p -2
#表明符号的正整数
p +1
#非常大的整数
p 1000000000000000000000000000000
#便于阅读的格式,加了下划线
p 100_000_000_000

记录的数值一般来说都按十进制来解释。若需要二进制、八进制、十六进制的数字时,需在开头添加相应的记号

例2

#用0x表示十六进制整数
p 0xDEADBEEF
#负的十六进制整数
p -0xCAFE
#方便阅读的长十六进制整数
p 0xDEAD_BEEF_CAFE_BABE
#用0开头的数表示八进制整数
p 01755
#用0b开头表示二进制数
p 0b1010111

#输出结果
#3735928559
#-51966
#16045690984503098046
#1005
#87

 

Fixnum和Bignum类

查看整数对象的所属类时,会发现并不属于Integer而是Fixnum或者Bignum这两个类。

Fixnum和Bignum是Integer的子类。

Fixnum是内部用固定长度来实现的整数,能够高效地处理比较小的整数。

Bignum是多倍长度的整数,可以用来定义任意大的整数。

Ruby在进行整数运算时,会自动区分是使用Fixnum还是Bignum。

例3

p 0x3FFFFFFF.class
p (0x3FFFFFFF+0x3FFFFFFF).class
p 0x40000000.class
p (0x40000000-1).class


#输出结果
#Fixnum
#Bignum
#Bignum
#Fixnum

 

浮点数

和其它语言一样,Ruby也使用浮点数来近似地表示一切实数。浮点数都是Float对象。

 

 

数值运算

数值对象之间有各种各样的运算。

例如,

10+2

5.25-7

4*5

3**5(乘方)

 

除法运算

在Ruby中根据运算对象的不同进行不同的操作。

如除法运算“/",两边同为Integerdui对象,运算符”/“进行整除运算;若任意一方为Float对象,则进行实数的除法运算。

例如,

7/2  #整除

7.0/2  #实数间的除法运算

 

符号操作

例如,

a = -3.0  #符号-表示负数

-a  #符号取反

 

优先级

优先级用()来明确标定

 

其它运算符

例如,

-7.divmod(2)  #对-7进行整除和求余运算

-3.1416.abs  #取绝对值

0.5772.ceil  #大于或等于该数的最小整数

 

类型和自动转换

Ruby是对附属类型要求很严格的编程语言,数据类型一般不会自动变换。

与Perl等不同,1+”2“这样的运算不会返回3而是会报错。

字符串不会自动地转换为数值,类型的转化需要使用方法to_i进行明确标明。

而整数和浮点数的运算会发生自动转换是特例之一。

to_i  #变换为整数

to_f  #变换为浮点数

当需要用到更多的数值类型或代数系统时,只需要引入相应的类库进行扩展即可。

 

比较

Ruby中的比较运算符有<,>,<=,>=,==,!=,<=>等。

其中<=>称为宇宙飞船运算符。

运算符的左边和右边的值进行比较,

左边<右边,返回负值

左边=右边,返回0

左边>右边,返回正数

例如,

1<=>2  #=>-1

2<=>2  #=>0

3<=>2  #=>1

宇宙飞船运算符主要用于排序。数组等的sort方法一般默认用<=>运算符对各元素大小进行判定。

 

数学函数

例如,

Math.acos(x)  #反余弦函数

Math.log(x)  #自然对数

对函数的调用一般不用”.“,而用”::“

Math::sqrt(x)  #平方根

Math::E  #自然对数的底

Math::PI  #圆周率

如果Math模块在作用域中被include,则可以对函数进行直接调用。

例如,

Include Math

cos(0)

log10(2)

 

比特运算(位运算)

例,

a = 0b1100
b = 0b1010
#与运算
p a&b
#或运算
p a|b
#与或运算
p a^b
#非运算
p ~a
#左移运算
p a<<1
#右移运算
p a>>1
#负的左移运算
p a<<-1

#取比特位
p a[0]

 

转载于:https://www.cnblogs.com/enjoytesting/archive/2012/07/10/2581713.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值