`
zarknight
  • 浏览: 147916 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Ruby中的数字【一】

阅读更多
数字的表达形式
==========================================
可以分无符号和有符号两种:
237     # 无符号(正数)
+237    # 和上面的相同
-237    # 负数

如果一个数字很长,你可以在数字的中间任何地方(不能在两头)加入下划线来标记,使其更容易辨别:
1048576     # 一个简单的数字
1_048_576   # 其值和上面的相同
10_48_57_6  # 还是和上面的相同


也可以以8,10,16进制表示数字:
0b10010110      # 2进制,以0b开头
01234           # 8进制,以0开头
0xdeadbeef      # 16进制,以0x开头

浮点数的表现形式:
3.14          
-0.628
6.02e23         # 6.02乘以10的23次幂
6.626068e-34

Float这个类定义了数字的上下限,不过他们的值是看具体的机器的,在不同的机器上面可能会不一样:
Float::MIN          # 2.2250738585072e-308 (在我的机器上)
Float::MAX          # 1.79769313486232e+308
Float::EPSILON      # 2.22044604925031e-16


数字的一些基本操作符
===============================================
+,-,*,/是最基本的操作符,Ruby中,大部分这些操作符其实是方法,因此,我们可以覆盖它。
做幂预算的符号是**,在老的一些编程语言中会有看到,比如BASIC和FORTRAN。
a = 64**2    # 4096
b = 64**0.5  # 8.0
c = 64**0    # 1
d = 64**-1   # 0.015625

两个整数相除,得到的结果是一个整数(即相除结果的整数部分),如果你想得到的结果是一个浮点数,请保证做除法的两个数中,至少有一个是浮点数:
3 / 3        # 3
5 / 3        # 1
3 / 4        # 0
3.0 / 4      # 0.75
3 / 4.0      # 0.75
3.0 / 4.0    # 0.75

下面的方式可以保证在使用变量做除法运算的时候,得到的结果是浮点数:
z = x.to_f / y
z = Float(x) / y


数字的四舍五入
==================================================
使用round方法:
pi = 3.14159
new_pi = pi.round   # 3

temp = -47.6
temp2 = temp.round  # -48

有时候,我们不是需要一个四舍五入后的整数,而是取小数后某位上的四舍五入,那么,我们可以使用sprintf方法:
pi = 3.1415926535
pi6 = eval(sprintf("%8.6f",pi))  # 3.141593
pi5 = eval(sprintf("%8.5f",pi))  # 3.14159
pi4 = eval(sprintf("%8.4f",pi))  # 3.1416

不过上面的看起来太难看了,这样,我们在Float类中封装一个方法:
class Float

  def roundf(places)
    temp = self.to_s.length
    sprintf("%#{temp}.#{places}f",self).to_f
  end

end

这样,我们就可以如此使用:
pi = 3.1415926535
res = pi.roundf(4)    # 3.1416


浮点数的格式化
========================================================
有三种方式可以用来格式化浮点数:
1.使用printf方法:
x = 345.6789
i = 123
printf("x = %6.2f\n", x)    # x = 345.68
printf("x = %9.2e\n", x)    # x = 3.457e+02
printf("i = %5d\n", i)      # i =   123
printf("i = %05d\n", i)     # i = 00123
printf("i = %-5d\n", i)     # i = 123

2.使用sprintf
str = sprintf("%5.1f",x)    # "345.7"

3.使用%
str = "%5.1f" % x            # "345.7"
str = "%6.2f, %05d" % [x,i]  # "345.68, 00123"

 

分享到:
评论
2 楼 pobing 2014-07-25  
总结的很全
1 楼 ruby-china 2007-10-14  
转了几篇文章到www.ruby-china.cn了。
如果有版权问题。请随时联系我。
同时非常感谢你的翻译。

相关推荐

    ruby 中文文档 必备资料

    在Ruby中,异常类是继承自`StandardError`的,你可以自定义异常类来处理特定类型的错误。 Ruby on Rails是Ruby最著名的Web开发框架,它遵循MVC(模型-视图-控制器)架构模式。这份文档可能也涵盖了Rails的相关内容...

    ruby中文教程,从基础到深入的让你学习ruby

    Ruby是一种面向对象的、动态类型的编程语言,以其简洁、优雅的语法和强大的元编程能力而闻名。本教程旨在帮助初学者从零开始掌握Ruby,并逐步深入到高级特性,使你能够充分利用Ruby的强大功能。 首先,让我们从Ruby...

    ruby中文文档.chm

    在Ruby中,一切都是对象,包括基本的数据类型如字符串、数字和布尔值。这种特性使得Ruby在处理复杂问题时具有很高的灵活性。文档中将详细讲解Ruby的基础语法,如变量声明、控制结构(条件语句、循环)、函数和方法...

    Ruby-一个Ruby的例子

    在Ruby中,一切都是对象,包括基本数据类型如数字、字符串和布尔值。例如,当你在Ruby中写下"hello",它实际上是一个String对象,你可以调用方法在它上面操作,如`"hello".upcase`会返回"HELLO"。 其次,Ruby的动态...

    Ruby入门教程中文PDF 附实例

    Ruby还是一个面向对象的语言,每个值都是一个对象,包括基本类型如数字和字符串。类和对象是Ruby的核心概念,你可以自定义类并创建实例。例如,创建一个名为`Person`的类并初始化姓名: ```ruby class Person def ...

    ruby 中文 教程 从入门到精通

    - **对象**:在Ruby中,每个实体都是对象,即使是数字或字符串也不例外。 - **封装**:通过私有方法和属性限制对外部的直接访问,保护内部状态。 - **继承**:允许子类继承父类的属性和方法,实现代码重用。 - **...

    ruby 中文教程(带例子代码)

    最后,文件名中的数字和点(如E3.8-1.rb)可能表示章节和小节,这是一种常见的教程组织方式。例如,E4.4-1.rb可能对应第四章第四小节的第一个练习,而E4.5-1.rb可能是同一章的下一个练习,这表明教程逐步递进,难度...

    Ruby新手学习书(Ruby语言中文教程)和Rails_4_days

    Ruby是一种面向对象的编程语言,以其简洁、优雅的语法著称,被广泛应用于Web开发,尤其是与Ruby on Rails框架结合使用。"Ruby新手学习书"和"Rails_4_days"这两个资源是为初学者设计的,旨在帮助他们快速掌握Ruby语言...

    Ruby编程Ruby Programming

    根据提供的文件信息,我们将深入探讨与“Ruby编程Ruby Programming”这一主题相关的几个核心知识点。这本面向初学者和高级读者的指南旨在全面介绍Ruby编程语言的基础及其高级特性,因此我们将从多个角度来解析这些...

    Ruby-Ruby的面向对象的枚举

    在上述代码中,`DaysOfWeek` 类定义了七天的工作日,每个成员变量对应一天的数字。这样的枚举类可以方便地用于表示和比较日期,或者根据工作日执行不同的逻辑。 然而,仅仅定义这些常量并不足以实现枚举的全部功能...

    笨办法学ruby_笨办法学ruby_ruby_bravevk4_

    Ruby还支持闭包,这是一种强大的工具,可以捕获和存储当前环境的变量,这在函数式编程中尤其有用。 "不墨迹,大量练习"是该教程的一大特点。学习编程不仅仅是理论知识的积累,更重要的是动手实践。书中的每个小节...

    Ruby脚本语言经典教程.pdf

    这意味着在Ruby中,几乎任何事物都是对象,包括数字和字符串。Ruby中的面向对象编程可以让你以直观的方式编写代码,通过继承、封装、多态和抽象等概念来提高代码的复用性、可维护性和可扩展性。 2. **语法简洁**:...

    Ruby-Configatron一个超级酷简单功能丰富的Ruby应用程序的配置系统

    Configatron作为Ruby中的一个强大配置管理工具,以其简洁的API、动态配置和灵活的结构,大大简化了应用的配置工作。无论是在小型项目还是大型复杂系统中,它都能帮助开发者更好地组织和管理配置,从而提升开发效率和...

    Ruby 教程 The Book of Ruby

    - **实战导向**:本书通过丰富的实例演示Ruby的各项功能,帮助读者在实践中学习。 - **深入浅出**:作者Huw Collingbourne以其丰富的教学经验和精湛的技术功底,将复杂的概念解释得通俗易懂。 - **全面覆盖**:不仅...

    ruby under a microscope

    - 这段代码展示了Ruby中的一个简单循环,通过`times`方法来迭代0到9的数字并打印出来。它被包含在本书中,可能是为了展示Ruby中常见的编程模式或者作为讲解某些概念的示例。 ##### 书籍简介 - **Ruby Under a ...

    Ruby Data-Processing ruby数据处理

    1. **Ruby Map**: Map函数允许我们将一个操作应用到数组或集合中的每一个元素上,然后返回一个新的数组,包含应用操作后的结果。例如,如果你有一个数组包含数字,你可以用map来将每个元素平方: ```ruby numbers...

    Ruby及开发工具(一个script的程序语言)

    1. 面向对象:Ruby是一种纯面向对象的语言,所有的数据类型都是对象,包括基本类型如数字和字符串。这使得在Ruby中进行面向对象编程非常自然。 2. 动态类型:Ruby具有动态类型系统,变量的类型在运行时自动确定,...

    Ruby Pocket Reference.pdf

    文档提到了一些关键内容的目录结构,例如运行 Ruby 解释器、使用 Unix/Linux 系统中的 Shebang 行、在 Windows 上关联文件类型、Ruby 的保留字、运算符、注释、数字、变量、符号、预定义变量、伪变量、全局常量、...

    Ruby Programming

    - **Martin Fowler**(ThoughtWorks首席科学家)提到:“Ruby是一种强大而实用的语言,每当我在工作中使用它时,《Programming Ruby》总是陪伴在我身边。” - **Mike Clark**(作者兼顾问)认为:“如果你的世界...

Global site tag (gtag.js) - Google Analytics