`
qw232144
  • 浏览: 35294 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

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]

 

分享到:
评论

相关推荐

    从入门到精通HTML5——PDF——网盘链接

     4.3.3 有序列表的起始数值——start 72  4.4 定义列表标记——dl 73  4.5 菜单列表标记——menu 74  4.6 目录列表——dir 75  4.7 使用嵌套列表 76  4.7.1 定义列表的嵌套 77  4.7.2 无序列表和有序列表...

    关于 Ruby 的基本概念、特性、常用框架和应用领域的简要介绍

    面向对象的三大特性——封装、继承和多态在 Ruby 中都有很好的体现: - **封装**:将数据和操作这些数据的方法封装在一起,隐藏实现细节。 - **继承**:通过继承父类的属性和方法,子类可以复用代码。 - **多态**:...

    Ruby 数据类型

    Ruby支持的数据类型包括基本的Number、String、Ranges、Symbols,以及true、false和nil这几个特殊值,同时还有两种重要的数据结构——Array和Hash。 数值类型(Number) 1、整型(Integer) 整型分两种,如果在31位以内...

    Java 自学秘籍(学习之路)(csdn)————程序.pdf

    编写第一个Java程序通常是“Hello World”示例,这是学习任何编程语言时的一个传统入门程序。通过这个简单的程序,可以了解Java的基本语法结构。 #### 四、JAVA关键字 Java中有许多保留的关键字,它们具有特殊的...

    HTML网页设计参考手册.pdf

    - **文字标注标记——ruby**:用于标注文字,常用于显示汉语拼音或其他注音符号。 - **声明变量标记——var**:用于标记变量名。 - **忽视HTML标签标记——plaintext、xmp**:使文本以纯文本形式显示,忽略其中的...

    进军python——与@龟叔握手

    Python是一种高级编程语言,由荷兰人...总的来说,Python是一门易学易用、功能强大的编程语言,适合初学者入门,同时也适用于专业开发者进行复杂项目开发。掌握Python不仅可以提升个人技能,也为进入IT行业打开了大门。

    精通正则表达式~~~

    用环视功能为数值添加逗号... 59 Text-to-HTML转换... 67 回到单词重复问题... 77 第3章:正则表达式的特性和流派概览.... 83 在正则的世界中漫步... 85 正则表达式的起源... 85 最初印象... 91 正则表达式...

    Web开发敏捷之道第三版(中文版).pdf

    综上所述,《Web开发敏捷之道第三版》这本书全面涵盖了使用Ruby on Rails框架进行Web开发的各个方面,不仅适合初学者入门,也适合有一定经验的开发者深入学习。通过实践示例项目Depot的应用程序,读者可以循序渐进地...

    opencv英文版教程

    此外,还提供Python、Ruby、MATLAB等其他语言的接口。 - **设计目标**:OpenCV的设计重点在于执行速度尽可能快,特别适用于实时应用。 - **性能优化**:通过优化的C代码以及对多核处理器的支持来提高性能。对于Intel...

Global site tag (gtag.js) - Google Analytics