`
hankgong
  • 浏览: 200285 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

Ruby用于日常计算的两个有用的配置

    博客分类:
  • Ruby
阅读更多

很多刚开始接触脚本语言的人估计都会对整数除法有点不习惯,比如

9/2 =》 4 

 

反正我是觉得不太方便,特别是自己有时候用ruby来计算一点东西,经常就忘记在定义的整数后面加上一个to_f方法。

 

ruby中其实有一个类库可以用来解决这个问题,mathn. 如果你载入了这个库之后,

 

9/2 就会输出 9/2 而不是浮点数。一般来说,用这个解决方法就够用了,但是昨天我写的一个程序用来计算一个稍微复杂一点的数的时候,莫名其妙的给我一个错误,我估计原因应该是因为我的算式里面有指数这样的无理数,mathn还硬要算出一个有理数来,结果溢出了。

 

幸好ruby语言比较灵活,我给ruby的类库重载了一下就可以实现我要的功能。

 

class Float
    def to_s
        format("%.3f", self)
    end
end

class Fixnum
    def / (num)
        self.to_f/num.to_f
    end
end

 

一个是用来给浮点输出格式化一下,后面的就是让整数除法自动的转成浮点数以后再除。简单把,呵呵!

 

irb(main):008:0> 7/3

=> 2.333

irb(main):009:0> 8/2

=> 4.000

 

如果在程序里面想用原来的整数除法,可以用div函数。


分享到:
评论
9 楼 icefishc 2010-01-27  
hankgong 写道
其实还有Matlab,perl都是出来浮点的结果!

python里面有一个
from __future__ import division,不知道是不是要把这个特性加到以后的python里面。

我个人觉得还是有这个特点比较方便,强类型的语言当然这不是个问题。脚本语言本来就不定义类型,还是生成浮点方便。因为我主要是用脚本语言来些一点计算的小程序或者处理我仿真出来的结果来生出图表,呵呵!


ruby本来就是强类型语言。
至于perl 这东西的类型比较怪. 基本可以看作弱类型语言.

8 楼 hankgong 2010-01-26  
其实还有Matlab,perl都是出来浮点的结果!

python里面有一个
from __future__ import division,不知道是不是要把这个特性加到以后的python里面。

我个人觉得还是有这个特点比较方便,强类型的语言当然这不是个问题。脚本语言本来就不定义类型,还是生成浮点方便。因为我主要是用脚本语言来些一点计算的小程序或者处理我仿真出来的结果来生出图表,呵呵!
7 楼 night_stalker 2010-01-26  
C, C++, C#, Java, Python, Scala, Ruby 里面整数相除的结果都是整数
只有 Haskell 和 Javascript 有可能出现浮点结果

应该向多数看齐才对 ……
6 楼 hankgong 2010-01-26  
如果想要保留原来的整数除法的话也是可以的
class Fixnum  
    def / (num)  
        self%num==0 ? (self.div num):(self.to_f/num.to_f)
    end  
end  



irb(main):001:0> 8/3
=> 2.6667
irb(main):002:0> 8/4
=> 2
irb(main):003:0> 8.0/4
=> 2.0000
irb(main):004:0>

5 楼 hankgong 2010-01-26  
我当然知道是可以用
7.0/2
这样的方式来算这样的简单演示。

但是在你写程序来算一点东西的时候,你用的一般都是变量吧,搞不好就忘记加个to_f了,然后ruby就都给你算成整数了!
4 楼 amonlei 2010-01-26  
liusong1111 写道
7.0/2

对,应该这么做
3 楼 liusong1111 2010-01-26  
7.0/2
2 楼 fuwang 2010-01-26  
二楼不要说怪话。
1 楼 trace 2010-01-25  
恩,ruby就是让人hack的

相关推荐

    Ruby-timediff计算两个时间相差多少的Gem

    这个Gem专门用于计算两个时间相差多少,能够提供更加灵活和方便的时间差处理功能。 "Ruby-timediff" Gem的核心功能在于提供了一种简单的方法来比较和计算两个时间或日期对象之间的差异。它支持多种单位,如秒、分钟...

    Ruby-JsonCompare返回两个JSON文件之间的差异

    JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,被广泛用于API交互、配置文件以及存储和传输数据。当我们需要比较两个JSON文件的内容,以了解它们之间的差异时,可以借助特定的工具或库,如`Json...

    Windows上配置Ruby运行环境详解

    在提供的文件名"ruby186-26.exe"中,我们可以推测这是Ruby 1.8.6的一个版本,尽管较旧,但依然可以作为学习和理解环境配置的参考。请确保下载最新稳定版的Ruby以获取最佳性能和安全更新。 2. **安装Ruby** 运行...

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

    Configatron就是一个为解决这一问题而设计的库,它提供了一个简单易用且功能丰富的框架,使得Ruby应用程序的配置工作变得轻松高效。 Configatron的核心理念是提供一个简洁的API,让开发者能够快速地定义和访问应用...

    Ruby-QRcode一个用于解析QR码的Ruby库

    Ruby-QRcode库是Ruby编程语言中用于生成和解析QR码的一个强大工具。QR码,全称为Quick Response Code(快速响应码),是一种二维条形码,可以存储各种数据,如文本、URL、联系人信息、日历事件等,并且在手机扫描...

    Ruby-Ruby框架用于在一个地方保存所有类型的通知邮件程序推送通知等

    在标题和描述中提到的“Ruby框架用于在一个地方保存所有类型的通知(邮件程序,推送通知等)”,这可能指的是Ruby的一个特定库或者框架,用于集中管理应用程序中的各种通知机制。 这个框架可能是`ActiveDelivery`,...

    ruby1.8.6 + rails2.0.2 安装配置 详细说明

    在本文中,我们将深入探讨如何在您的计算机上安装和配置Ruby 1.8.6、Rails 2.0.2、RadRails 0.7.2 IDE以及MySQL数据库。这是一个适用于初学者和有一定经验的开发者的技术指南,旨在帮助您创建一个稳定的开发环境,...

    Linux操作系统下轻松配置Ruby的程序环境

    如果使用的是Red Hat系列的Linux发行版,则可能需要额外下载`grep-2.5.1-32.2.i386.rpm`和`pcre-devel-4.5-3.2.SEL4.i386.rpm`这两个RPM包。 3. 下载并安装Lighttpd: ```bash tar xzvf lighttpd-1.4.18.tar.gz ....

    Ruby on Rails安装及MySQL数据库配置指南

    Ruby on Rails 安装及 MySQL 数据库配置指南 本文详细介绍了 Ruby on Rails 的安装步骤,以及 MySQL 数据库的配置方法,并提供了一些官方阅读资源。 一、Ruby on Rails 安装 Ruby on Rails 的安装可以分为以下几...

    Ruby-EconfigRuby应用程序的灵活配置

    Ruby-Econfig是一个专门为Ruby应用程序设计的灵活配置管理库。它旨在提供一种简洁、高效的方式来管理和组织应用中的配置信息,使得开发者能够轻松地处理各种环境下的配置差异,如开发、测试和生产环境。Econfig库的...

    Ruby.CLf配置文件

    Source Insight CLF插件,使SourceInsight支持Ruby语言

    Ruby-rubybuild编译和安装Ruby

    在Ruby开发中,为了管理不同版本的Ruby环境,我们常常会使用到`rbenv`和`ruby-build`这两个工具。本文将详细介绍如何使用`ruby-build`来编译和安装Ruby。 `rbenv`是一个用于管理全局或用户级别的Ruby版本的工具,它...

    用于计算和转换测量值的简单 Ruby gem_Ruby_代码_相关文件_下载

    ruby-measurement是一个简单的 Ruby gem,用于计算和转换测量单位。 安装 将此行添加到应用程序的 Gemfile: gem 'ruby-measurement' 然后执行: $ bundle 或者自己安装: $ gem install ruby-measurement 用法 ...

    Ruby-CassandraDriverApacheCassandra的一个纯Ruby驱动器

    标签“Ruby开发-数据库驱动器”表明这个库是为Ruby开发者提供的一种数据库接口,专门用于与Cassandra数据库交互。它简化了Cassandra API的使用,让Ruby程序员无需深入了解底层细节就能进行数据库操作。 在压缩包内...

    Ruby-Ruby的线性回归

    最后,它提到了“适用于SciRuby生态系统(Daru & IRuby)”,这表明它与这两个科学计算相关的Ruby库有良好的集成,Daru用于数据操作和分析,IRuby则是一个交互式Ruby环境,常用于Jupyter notebook。 标签“Ruby开发...

    Windows下RDT+Eclipse搭建 ruby开发环境配置

    在Windows环境下,搭建Ruby开发环境是一项基础而重要的工作,它涉及到多个步骤,包括安装必要的软件、配置环境变量以及集成开发工具的设置。本教程将详细讲解如何使用RDT(Ruby Development Tools)与Eclipse来创建...

    Ruby-Shield用于路由和模型上下文的认证协议

    在理解Shield的核心概念之前,我们先来探讨一下身份验证和OAuth这两个关键概念。 身份验证是确认用户是否是他们声称的那个人的过程,通常通过用户名和密码完成。而OAuth(开放授权)是一种授权协议,允许第三方应用...

    hashdiff:Hashdiff是一个Ruby库,用于计算两个哈希之间的最小差异

    Hashdiff是一个Ruby库,用于计算两个哈希之间的最小差异。 它还支持比较两个数组。 Hashdiff不会猴子修补任何现有的类。 所有功能都包含在Hashdiff模块内部。 Docs : 警告:请勿将库用于比较大型数组,例如〜...

    Ruby-Figaro简单的Rails应用程序配置

    Ruby on Rails是一个强大的Web开发框架,它为开发者提供了丰富的功能和便利性。在构建Rails应用时,管理和配置应用的环境变量是至关重要的。Figaro就是这样一款工具,它为Rails应用程序提供了一个简单的方式来管理...

Global site tag (gtag.js) - Google Analytics