spec を書くときに float の誤差を無視したりしなかったり

先週気づいていればもっと楽にできたのに。軽くはまったところの解決法はすでに本家ドキュメントにありましたよ。すみません>ボス

context "循環小数 (1 / 3.0) のspecを書く場合" do
  specify "0.33 に近く、誤差は 0.004 以下であること" do
    ( 1 / 3.0 ).should_be_close 0.33, 0.004
  end
end

context "浮動小数点の誤差を含む計算への spec を書く場合、0.1を10回足しあわせた値は" do
  setup do
    @ret = 0.0
    10.times { @ret += 0.1 }
  end

  specify "1.0に近く、誤差は0.1以下であること" do
    @ret.should_be_close 1.0, 0.1
  end

  specify "1.0と*同じ*ではないこと" do
    @ret.should_not_eql 1.0
    @ret.should_not_equal 1.0
  end
end

:!spec -fs -c /private/tmp/float_spec.rb

循環小数 (1 / 3.0) のspecを書く場合
- 0.33 に近く、誤差は 0.004 以下であること

浮動小数点の誤差を含む計算への spec を書く場合、0.1を10回足しあわせた値は
- 1.0に近く、誤差は0.1以下であること
- 1.0と*同じ*ではないこと

Finished in 0.00174 seconds

3 specifications, 0 failures