整数
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]
相关推荐
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支持的数据类型包括基本的Number、String、Ranges、Symbols,以及true、false和nil这几个特殊值,同时还有两种重要的数据结构——Array和Hash。 数值类型(Number) 1、整型(Integer) 整型分两种,如果在31位以内...
编写第一个Java程序通常是“Hello World”示例,这是学习任何编程语言时的一个传统入门程序。通过这个简单的程序,可以了解Java的基本语法结构。 #### 四、JAVA关键字 Java中有许多保留的关键字,它们具有特殊的...
- **文字标注标记——ruby**:用于标注文字,常用于显示汉语拼音或其他注音符号。 - **声明变量标记——var**:用于标记变量名。 - **忽视HTML标签标记——plaintext、xmp**:使文本以纯文本形式显示,忽略其中的...
Python是一种高级编程语言,由荷兰人...总的来说,Python是一门易学易用、功能强大的编程语言,适合初学者入门,同时也适用于专业开发者进行复杂项目开发。掌握Python不仅可以提升个人技能,也为进入IT行业打开了大门。
用环视功能为数值添加逗号... 59 Text-to-HTML转换... 67 回到单词重复问题... 77 第3章:正则表达式的特性和流派概览.... 83 在正则的世界中漫步... 85 正则表达式的起源... 85 最初印象... 91 正则表达式...
综上所述,《Web开发敏捷之道第三版》这本书全面涵盖了使用Ruby on Rails框架进行Web开发的各个方面,不仅适合初学者入门,也适合有一定经验的开发者深入学习。通过实践示例项目Depot的应用程序,读者可以循序渐进地...
此外,还提供Python、Ruby、MATLAB等其他语言的接口。 - **设计目标**:OpenCV的设计重点在于执行速度尽可能快,特别适用于实时应用。 - **性能优化**:通过优化的C代码以及对多核处理器的支持来提高性能。对于Intel...