我是新来的编码,我写了一些快速计算装甲对某些敌人的基础上的水平为WoTLK经典,所以我不必继续回到Wolfram阿尔法。
问题是
def BossArmor(armor)
result = ((armor / (armor + 16635)) * 100)
puts result
end
返回0,而
def BossArmor(armor)
result = ((armor / (armor + 16635.0)) * 100)
puts result
end
返回正确的金额(59.54228178125835)
完整的代码,如果这很重要的话
def RegularArmor(armor)
result = ((armor / (armor + 15232.5)) * 100)
puts result
end
def BossArmor(armor)
result = ((armor / (armor + 16635.0)) * 100)
puts result
end
def GetArmorSafely
puts "How much armor do you have?"
armor = gets
if armor =~ /^-?[0-9]+$/
armor = armor.to_i
RegularArmor(armor)
BossArmor(armor)
else
puts "Invalid input, only integers are accepted."
GetArmorSafely()
end
end
GetArmorSafely()
我假设这与.0使其成为浮点数/十进制或类似的东西有关,但我无法理解为什么它没有它就返回0。也许这与我将输入字符串转换为整数有关?
据我所知,我只是把一个整数放入一个简单的计算中。
任何答案将不胜感激。
1条答案
按热度按时间2ic8powd1#
当两个整数相除时,结果是一个整数。
但如果其中一个是浮点数,则结果将是浮点数。
可以使用
#to_f
方法将Integer
转换为Float
。也可以使用
#fdiv
方法。