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)

Float整数の1つを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に伝えてください。それを行う方法はたくさんありますが、最も簡単なのは、オペランドの1つをFloatに変換することだと思います...

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

「完全な」結果を得るには、floatを使用する必要があります。

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