初学者Ruby- If/else问题,最后一个参数测试失败



我正在做一些在线练习,由于上次考试一直失败,我被卡住了。

该任务涉及创建一个程序来计算给定工厂速度的工厂生产的汽车数量。每小时的速度等于工厂的速度(在1-10之间)* 221。然而,速度对生产的汽车质量的影响是呈指数级的,因此根据规格中规定的速度进行折扣。

下面的代码用于计算在1-10之间给定速度的工厂每分钟可以生产多少辆整车和工作车。

我使用了.floor方法来确保答案四舍五入到最接近的整数。所有的测试都通过了,除了我输入10的时候。在本例中,代码返回27,而不是28。

class AssemblyLine
def initialize(speed)
@speed = speed
end
def working_items_per_minute
rate = @speed * 221 / 60
if @speed <= 4
rate = rate 
elsif @speed <= 8
rate = rate * 0.9
elsif @speed == 9
rate = rate * 0.8
else 
rate = rate * 0.77
end 
return rate.floor
end
end

任何关于为什么它返回27的想法将不胜感激!(221*10/60 *0.77应该四舍五入到28!)

你遇到的问题是因为ruby会处理整数,直到你引入Float。

如果您启动像irb或pry这样的repl:

,很容易看到发生了什么。
$ pry
pry(main)> 2210 / 60
=> 36
pry(main)> 2210 / 60.0
=> 36.833333333333336
pry(main)> 60.class
=> Integer
pry(main)> 60.0.class
=> Float

最新更新