[英]Beginner Ruby- If/else question, test failing for the final parameter
我正在做一些在线练习,但由于最后一次测试一直失败而被卡住了。
该任务涉及创建一个程序来计算给定工厂速度的工厂生产的汽车数量。 每小时费率等于工厂速度(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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.