Rspec eq()舍入数字

时间:2016-01-13 02:54:18

标签: ruby rspec

如何在比较eq()的比较中阻止Rspec舍入fixNum?

红宝石:

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)

1 个答案:

答案 0 :(得分:2)

这不是RSpec舍入任何东西,只是Ruby假设因为你将两个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