2016-01-13 108 views
0

如何阻止Rspec從舍入fixNum的比較像eq()?Rspec eq()四捨五入數

紅寶石:

def power(base, exponent) 
    base**exponent 
end 

Rspec的:

Failure/Error: expect(power(5,-5)).to eq(1/3125) 

    expected: 0 
     got: (1/3125) 

,但通過與

expect(power(5,-5)).to eq(0.00032) 

回答

2

這不是RSpec的四捨五入任何東西,它只是Ruby的假設,因爲你分2 Fixnum然後你想要一個Fixnum回來。

如果您正在潛水的任何數字是FloatRational您的部門將產生相應的班級,並且它將通過您的平等檢查。

> power(5, -5) == (1/3125) 
=> false 
> power(5, -5).class 
=> Rational 
> (1/3125).class 
=> Fixnum 
> 0.00032.class 
=> Float 
> (1/3125) 
=> 0 
> (1.0/3125) 
=> 0.00032 
> power(5, -5) == (1.0/3125) 
=> true 
+0

謝謝。當原始測試以eq(0.00032)失敗但返回1/3125時,我知道它們在數學上是相同的,所以我只是將輸出複製到eq()測試中。 – uMinded