美文网首页ruby小白课程实战--宠物论坛Ruby
2.2 ruby数据类型--数字(Numeric)

2.2 ruby数据类型--数字(Numeric)

作者: 808cb3be8e58 | 来源:发表于2018-12-08 11:44 被阅读21次

    1、数字(Numeric)

    (1)数字形式包括整型和浮点型。整数型又分为Fixnum类、Bignum类。
    (2)Fixnum是-230到230-1或-262到262-1之间的整数。在这范围之外的整数是Bignum类。Bignum的数字可以是任意长度,长度限制于电脑的物理内存。
    #2**62代表2的62次方
    irb(main):001:0> a = 2**62
    => 4611686018427387904
    irb(main):002:0> b = 2**62 - 1
    => 4611686018427387903
    #a.class可以查看a对象所属的类
    irb(main):003:0> a.class
    #a不在-2^62到2^62-1的范围内,返回信息为Bignum类
    => Bignum
    irb(main):004:0> b.class
    #b在-2^62到2^62-1的范围内,返回信息为Fixnum类
    => Fixnum
    
    (3)直接定义一个小数,系统会自动识别为浮点型(Float)
    irb(main):001:0> a = 5.0
    => 5.0
    irb(main):002:0> a.class
    => Float
    irb(main):003:0> b = 5
    => 5
    irb(main):004:0> b.class
    => Fixnum
    

    在ruby中,在定义变量是不必提前申明类型的,定义好了之后,系统会自动判断数据类型。

    2、运算符

    (1)+、-、*我就不说了,和咱们从小学的数学一样,没有特别的地方
    (2)/除法:有一个地方需要注意:两个整数相除,得到的结果是一个整数。如果结果应该是小数,系统会向下取整为整数。
    #7/2实际为3.5,整数相除会向下取整为3
    irb(main):001:0> a = 7/2
    => 3
    #除数和被除数都为浮点型,或者其中一个为浮点型,得到的结果都是浮点型(Float)
    irb(main):002:0> b = 7.0/2
    => 3.5
    
    (3)%求模:就是取余数。
    irb(main):001:0> a = 7 % 3
    => 1
    
    (4)** 指数:3**2 指的是3的2次方
    (5)== 判断两个数是否相等,相等为true,否则为false。这个要注意和equal方法的区别。
    irb(main):001:0> 2 == 2
    => true
    #用==判断,整型自动转换成浮点型,再做对比。
    irb(main):002:0> 2 == 2.0
    => true
    #用equal判断,整型不会转换成浮点型。
    irb(main):003:0> 2.equal?(2.0)
    => false
    
    (6)<=> 判断两个数是大小关系:a>b返回1、a<b返回-1、a=b返回0。
    irb(main):001:0> 4 <=> 2
    => 1
    irb(main):002:0> 4 <=> 5
    => -1
    irb(main):003:0> 4 <=> 4
    => 0
    

    3、类型转换

    (1)整型转浮点型:to_f
    irb(main):005:0> 1.to_f
    => 1.0
    
    (2)浮点型转整型:to_i。小数执行to_i时,只保留整数部分,不会四舍五入
    irb(main):006:0> 1.8.to_i
    => 1
    

    4、常用函数

    (1)num.abs 取num的绝对值
    irb(main):007:0> -1.abs
    => 1
    
    (2)num.ceil 返回大于num的最小整数,即向上取整
    (3)num.floor 返回小于num的最大整数,即向下取整
    irb(main):008:0> 3.2.ceil
    => 4
    irb(main):009:0> 3.2.floor
    => 3
    
    (4)num.integer? num是整数返回true,否则返回false
    (5)num.negative? num小于0返回true,否则返回false
    (6)num.round 四舍五入。默认返回整数,如果想保留n位小数,可以num.round n
    irb(main):010:0> 3.1415926.round
    => 3
    irb(main):011:0> 3.1415926.round 2
    => 3.14
    
    (7)num1.step(num2,n) {|i| print i } 遍历num1到num2之间的数字,n是步长值,意思是每隔n个数取一次值,可以不填。

    step方法需要结合块来使用,块的概念我们后面会讲到。目前这个方法先了解一下。

    irb(main):001:0> 2.step(8)
    #2.step(8)没有直接得到2到8的遍历结果,而是得到了一个Enumerator迭代器对象。
    #迭代器可以理解成可以被遍历的一个接口,里面已经实现了next方法,迭代器通常和“块”结合使用,从而遍历出2到8的数字。
    => #<Enumerator: 2:step(8)>
    
    #大括号以及里面包含的内容{|i| puts i}就是“块”,块可以理解成代码块,Ruby中的概念,后面我们会详细讲。
    irb(main):001:0> 2.step(8) {|i| puts "输出此次遍历的值:#{i}"}
    输出此次遍历的值:2
    输出此次遍历的值:3
    输出此次遍历的值:4
    输出此次遍历的值:5
    输出此次遍历的值:6
    输出此次遍历的值:7
    输出此次遍历的值:8
    => 2
    #3是步长值,2到8之间每隔3取一个数
    irb(main):002:0> 2.step(8,3) {|i| puts "输出此次遍历的值:#{i}"}
    输出此次遍历的值:2
    输出此次遍历的值:5
    输出此次遍历的值:8
    => 2
    

    相关文章

      网友评论

        本文标题:2.2 ruby数据类型--数字(Numeric)

        本文链接:https://www.haomeiwen.com/subject/dfsthqtx.html