• ベストアンサー

rubyのエラー out of float range の原因

rubyでout of float range と算出されました。 これは計算の桁が大きすぎるためなのでしょうか。 ルビーは計算の桁がメモリーの許す限り無限と聞いたのですが。 どういう意味なのか教えていただきたいです。

質問者が選んだベストアンサー

  • ベストアンサー
  • notnot
  • ベストアンサー率47% (4900/10358)
回答No.1

>これは計算の桁が大きすぎるためなのでしょうか。 そんなところです。 例えば、 a=1E1000 # 10の1000乗 とすると、 warning: Float 1e1000 out of range という警告が出て、a の値は Infinity (無限大) になります。 >ルビーは計算の桁がメモリーの許す限り無限と聞いたのですが。 違います。きっと、聞き間違い、読み間違いですね。 整数の計算はメモリーの許す限り無限桁です。 通常の浮動小数点数の値は普通の他の言語と同じ。 BigDecimalライブラリを使うと、任意の桁数で浮動小数点数計算できます。

その他の回答 (1)

  • kmee
  • ベストアンサー率55% (1857/3366)
回答No.2

http://oshiete1.goo.ne.jp/qa5646276.html >rubyの整数 です。Floatは無限ではないです。 コンビネーションの計算ということだったので、整数演算のみが必要なので、紹介いたしました。 なにやら、確率計算をしているようですが nCm * (p^m) * ((p-1)^(n-m)) みたいな計算を、この式通りに計算しようとしてませんか? コンピュータで計算するときは、公式のまま計算するのではなく、式を変形して、コンピュータが計算しやすいようにすることも大切です。

参考URL:
http://www.ruby-lang.org/ja/man/html/Rational.html

関連するQ&A