5

我目前正在尝试将counts["email"]包含数字 82,000 的哈希除以total包含值 130 万的变量。

当我跑步时,puts counts["email"]/total我得到 0。

为什么我不能对这些进行除法?

4

3 回答 3

9

您正在执行除法,尽管不是您所期望的。在 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/

于 2012-06-25T22:19:57.600 回答
7

因为这就是 Ruby 的工作方式:当你将整数除以整数时,你会得到一个整数。在这种情况下,这将是 0,因为它是结果的整数部分。

要获得浮点结果,只需告诉 Ruby 你确实需要浮点数!有很多方法可以做到这一点,我想最简单的就是将操作数之一转换为浮点数......

puts counts["email"]/total.to_f
于 2012-06-25T21:30:10.690 回答
0

您需要使用浮点数才能获得“完整”结果。

counts["email"] / total.to_f
于 2012-06-25T21:28:18.243 回答