我目前正在尝试将counts["email"]
包含数字 82,000 的哈希除以total
包含值 130 万的变量。
当我跑步时,puts counts["email"]/total
我得到 0。
为什么我不能对这些进行除法?
您正在执行除法,尽管不是您所期望的。在 Ruby 中有许多不同的整数除法方法:
# Integer division:
5 / 4 # => 1
# Floating point division:
5.fdiv(4) # => 1.25
# Rational division:
5.quo(4) # => Rational(5, 4)
您还可以将其中一个整数转换为 aFloat
或 a Rational
:
5.to_f / 4 # => 1.25
5.to_r / 4 # => Rational(5, 4)
请注意,首先fdiv
直接调用比调用然后使用运算符要快。它还清楚地表明您正在使用浮点除法。to_f
/
因为这就是 Ruby 的工作方式:当你将整数除以整数时,你会得到一个整数。在这种情况下,这将是 0,因为它是结果的整数部分。
要获得浮点结果,只需告诉 Ruby 你确实需要浮点数!有很多方法可以做到这一点,我想最简单的就是将操作数之一转换为浮点数......
puts counts["email"]/total.to_f
您需要使用浮点数才能获得“完整”结果。
counts["email"] / total.to_f