`

娃娃鸭学Ruby-10、数字

阅读更多
Ruby中所有的值都是对象。

继承关系
                                                     Numeric
                                                         |
               ________________________|__________________________________________________
              |                       |                                         |                             |                                  |
           Integer             Float                                  Complex                     BigDecimal                     Rational
              |                                                           (standard library)           (standard library)            (standard library)
              |
     _____|_______
    |                      |
  Fixnum              Bignum


数值的智能转换:
如果一个整数能容纳在31个二进制位里(大多如此),那么它是Fixnum类的实例,否则就是Bignum类的实例。
Bignum对象用于表示任意大小的整数,如果一个操作的操作数是Fixnum对象,但是其结果超出了Fixnum的范围,该结果将被透明地转换成一个Bignum对象。
类似的,如果一个操作的操作数是Bignum对象,但是其结果能够保存在Fixnum对象里,那么该结果将被透明的转换成一个Fixnum对象。

Ruby使用Float类来近似地表示实数,该类会利用本地平台的浮点数表示形式。
Complex,BigDecimal,Rational类并非Ruby的内建类,但是标准库的一部分与Ruby一同发布。
Complex复数
BigDecimal任意精度的实数
Rational有理数

所有的数值对象都是不可变的。

1、数字字面量
0
123
12345678901234567890
能容纳于Fixnum类则是Fixnum,否则它就是一个Bignum

千分符
不在开头也不在结尾的下划线
1_000_000_000

0开头后面还有数字 八进制
0x开头十六进制  后面a-f 或A-F
0b/0B开头为二进制

字面量前面加一个减号,表示负数,加加号表示正数
2011-3-30 21:26 danny

2、浮点数字面量
浮点数字面量就是一个可选的正号或负号后依次加上: 一个或多个十进制数字、一个小数点(字符)及其后的一个或多个十进制数字,以及一个或选的指数部分。指数部分由字母e或E开始,后接一个可选的正号或负号,然后接一个或多个十进制数字。
浮点数字面量里也可以使用下划线
浮点值的基数只能为10.
0.0
-3.14
6.02e23           #6.02 * 10^23
1_000_000.01
不能写.1 表示0.1

2011-3-31 16:11 danny

3、算术操作
所有的Ruby数值类型都定义了标准的+ - * / 操作。
/  与操作类型有关。两整数 则截断型的整数除法 任一操作数是Float则执行浮点数除法
x=5/2 # x==2
y=5.0/2 #y==2.5
z=5/2.0 #z==2.5
除数为0的整数除法抛ZeroDivisionError
               浮点数除尘不会导致错误,只会返回一个名为 Infinity的值
0.0/0.0 特例。

NaN  Not-a-Number

取模操作符 %
x=5 %2  # x==1
x=1.5%0.4 #x=0.3 也可用在浮点数,有意思

注意
   整数除法操作,取操作和负数注意
-7/3==--3     向负无穷大圆整
-7%3==-2  

在Ruby中,-a/b==a/-b !=-(a/b)
----------------------------------------

** 操作
x**4      # x*x*x*x
x**-1    # 1/x
x**(1/3.0) # The cube root of x  开三次方
x**(1/4.0)  #开四次方

多个**操作,按照从右到左的顺序计算,
4**3**2  == 4**9
不同于64**2

2011-3-31 16:26

4、浮点数的二进制表示和圆整错误
Float对象采用二进制,精度高,可以近似表示0.1但无法精确表示
BigDecimal采用十进制,速度慢


分享到:
评论

相关推荐

    ruby-debug-ide

    《深入理解Ruby调试工具:ruby-debug-ide》 在Ruby编程世界中,高效的问题排查与代码调试是开发者必备的技能之一。ruby-debug-ide正是这样一个强大的调试接口,它为Ruby开发环境提供了集成的调试支持,使得开发者...

    src-oepkgs/ruby-ruby2ruby

    src-oepkgs/ruby-ruby2rubysrc-oepkgs/ruby-ruby2rubysrc-oepkgs/ruby-ruby2rubysrc-oepkgs/ruby-ruby2rubysrc-oepkgs/ruby-ruby2rubysrc-oepkgs/ruby-ruby2rubysrc-oepkgs/ruby-ruby2rubysrc-oepkgs/ruby-ruby2...

    ruby-1.8.7-p302.tar.gz

    Ruby,一种为简单快捷的面向对象编程(面向对象程序设计)而创的脚本语言,在20世纪90年代由日本人松本行弘(まつもとゆきひろ/Yukihiro Matsumoto)开发,遵守GPL协议和Ruby License。...该版本为ruby-1.8.7-p302

    hw-ruby-intro.zip_SaaS软件工程_hw-ruby-intro_ruby _ruby 中文_saas

    在本压缩包“hw-ruby-intro.zip”中,我们主要关注的是RUBY语言在SaaS(Software as a Service)软件工程中的应用。这个压缩包包含了一份名为“hw-ruby-intro”的作业代码,它是针对高级软件工程课程的,特别强调了...

    ruby-oracle相关的数据库操作的gems包

    标题提到的"ruby-oracle相关的数据库操作的gems包"是指一组用于连接和交互Oracle数据库的Ruby库。描述中指出,这些包主要基于oci8技术,oci8是Oracle公司提供的一个C接口,允许其他编程语言,如Ruby,与Oracle数据库...

    ruby-irb-1.8.7.352-13.el6.x86_64.rpm

    ruby-irb-1.8.7.352-13.el6.x86_64.rpm ruby-irb-1.8.7.352-13.el6.x86_64.rpm

    ruby-runtime手动插件.zip

    该压缩包文件 "ruby-runtime.hpi" 是 Jenkins 插件的标准格式,扩展名为 ".hpi"(Jenkins Plugin Installable Unit)。HPI 文件可以直接上传到 Jenkins 管理界面的“管理插件”部分进行安装。安装完成后,你可以在 ...

    ruby-2.5.3-x64 下载

    标题中的"ruby-2.5.3-x64"指的是Ruby语言的特定版本,2.5.3,这是一个64位的构建。Ruby的版本迭代频繁,每个新版本通常会包含性能优化、新的特性和错误修复。2.5.3是2018年发布的一个稳定版本,它带来了诸如改进的...

    Ruby-GNOME2.zip

    Ruby-GNOME2提供GNOME 2.0开发环境的Ruby绑定,目前在活跃更新中。如果你喜欢GTK的界面,你一定会喜欢Ruby-GNOME2。GTK目前提供Linux、 Windows等多个平台的运行库,也就是说使用GTK开发的应用程序可以在多个平台下...

    Ruby-RubyJMeter一个基于Ruby的DSL用于构建JMeter测试计划

    Ruby-JMeter是一个强大的工具,它将Ruby编程语言与Apache JMeter测试框架相结合,为性能测试和负载测试提供了灵活且易于使用的领域特定语言(DSL)。这个工具使得测试人员和开发者能够用Ruby编写JMeter测试计划,...

    ruby-2.4.3.tar.gz

    在这个场景中,"ruby-2.4.3.tar.gz"是一个压缩包,其中包含了Ruby 2.4.3的源代码。这个版本是在2017年发布的,相比CentOS 6.x默认的Ruby版本,它提供了更多的改进和新特性。Ruby 2.4系列引入了性能优化、新的语法糖...

    ruby-1.9.3-p547.tar.gz

    在本压缩包"ruby-1.9.3-p547.tar.gz"中,包含的是Ruby语言的一个特定版本——1.9.3-p547。 Ruby 1.9.3是Ruby的一个重要版本,发布于2012年,它带来了许多性能提升和新特性。这个版本对Ruby的语法进行了改进,包括更...

    ruby-2.4.5.tar.gz

    解压`ruby-2.4.5.tar.gz`后,你会得到一个名为`ruby-2.4.5`的目录,其中包含了Ruby源代码的所有文件和子目录。这些文件可能包括但不限于: 1. `README`: 提供关于该版本的基本信息和安装指南。 2. `INSTALL`: 包含...

    ruby-1.9.2-p290.tar.gz

    标题中的"ruby-1.9.2-p290.tar.gz"是一个开源编程语言Ruby的特定版本的归档文件,采用流行的tar和gzip格式进行压缩。这个版本是Ruby的1.9.2分支的一个更新点,标记为p290,意味着它是该分支的第290个补丁级别。在...

    ruby-debug-1.87.rar

    《Ruby调试工具:ruby-debug-1.87详解》 Ruby是一种动态、开源的编程语言,以其简洁的语法和强大的元编程能力深受开发者喜爱。在开发过程中,调试是必不可少的一环,而`ruby-debug-1.87`就是Ruby社区中广泛使用的...

    mingw32-ruby-1.9.1-wxruby-2.0.1-setup.exe

    mingw32-ruby-1.9.1-wxruby-2.0.1-setup.exe

    ruby-2.5.8.tar.gz

    - 解压`ruby-2.5.8.tar.gz`:使用`tar -zxvf ruby-2.5.8.tar.gz`命令解压。 - 编译与安装:进入解压后的目录,运行`./configure`,然后`make`和`make install`进行编译和安装。 - 验证安装:通过`ruby -v`检查...

    ruby-2.2.4.tar.gz、rubygems-2.6.2.zip、redis-3.2.2.gem

    `ruby-2.2.4.tar.gz`需要先解压,然后通过`configure`脚本和`make`命令编译安装。`rubygems-2.6.2.zip`解压后执行安装脚本来安装。Redis则通过`gem install redis-3.2.2.gem`来安装其客户端库。配置Redis服务,用户...

    ruby-2.6.5.tar.gz

    在终端中输入`tar -zxvf ruby-2.6.5.tar.gz`,这会创建一个名为`ruby-2.6.5`的目录,包含所有源代码。 2. **进入目录**:使用`cd`命令进入新解压的目录,如`cd ruby-2.6.5`。 3. **配置**:运行`./configure`脚本...

    ruby-2.2.0.tar.gz

    Ruby-2.2.0是Ruby编程语言的一个版本,它是一个强大的、动态的、面向对象的脚本语言,以其简洁的语法和强调程序员生产力而受到欢迎。Ruby在20世纪90年代由日本的松本行弘(Yukihiro Matsumoto)创建,它的设计哲学是...

Global site tag (gtag.js) - Google Analytics