[#36686] 1.1 < 61.1 - 60.0 — Shin-ichiro HARA <sinara@...>

原です。

19 messages 2002/12/06

[#36770] www.ruby-lang.orgリニューアル準備のお知らせ — TADA Tadashi <sho@...>

ruby-lang.orgのwebmasterチームでは、タイムリーな情報提供と使いやすい

11 messages 2002/12/16

[ruby-list:36690] Re: 1.1 < 61.1 - 60.0

From: Take_tk <ggb03124@...>
Date: 2002-12-06 05:39:48 UTC
List: ruby-list #36690
たけ(tk)です

[ruby-list:36686] 1.1 < 61.1 - 60.0 にて
Shin-ichiro HARA <sinara@blade.nagaokaut.ac.jp> さん曰く:

> 私の本の読者から、成績処理のプログラム中に 1.1 < 61.1 - 60.0 が
> 真になってしまって困っている、と報告を受けたんですが、どうアド
> バイスしたらいいでしょう?

> どうするんしょうか?つまり入学試験みたいな、測定値自体はアバウト
> なわりには判定基準はやたらシビアな場合。
> 

  Float_fixed_cmp.rb を作って require すれば?

----
a = 1.1
b = 61.1 - 60.0

p( a < b)     #=> true
p( a == b )   #=> false
p( a <=> b )  #=> -1

#-- Float_fixed_cmp.rb
class Float
  FIX=10000.0
  def fix
    (self*FIX).to_i
  end

  def <=>(other)
    self.fix <=> other.fix  # Integer#<=>
  end

  def ==(other)
    self.fix == other.fix   # Integer#==
  end
  def <(other)
    self.fix < other.fix    # Integer#<
  end
end
#--

p( a < b)     #=> false
p( a == b )   #=> true
p( a <=> b )  #=> 0
----

 Float の比較演算子は Float#<=> を使っていないんですね……

Take_tk = KUMAGAI Hidetake
たけ(tk)=熊谷秀武


In This Thread