私は現在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)
Float
整数の1つをaまたはRational
:に変換することもできます。
5.to_f / 4 # => 1.25
5.to_r / 4 # => Rational(5, 4)
fdiv
最初に直接呼び出す方が、演算子を呼び出してから使用するよりも高速であることに注意してください。また、浮動小数点除算を使用していることも明確になります。to_f
/
これがRubyの仕組みです。整数を整数に分割すると、整数が得られます。この場合、結果の整数部分であるため、0になります。
フロートの結果を得るには、実際にフロートが必要であることをRubyに伝えてください。それを行う方法はたくさんありますが、最も簡単なのは、オペランドの1つをFloatに変換することだと思います...
puts counts["email"]/total.to_f
「完全な」結果を得るには、floatを使用する必要があります。
counts["email"] / total.to_f