
No.1ベストアンサー
- 回答日時:
おそらく関数aはRationalで計算しているのだと思いますが、
「1.0」と記述すると、その数値は「Float」(浮動小数点型)で表現されます。
また、「RationalとFloatとの計算結果」はFloatになります。
以前の質問で別の方が答えられていた通り、Float 型は、精度に限度があり、その結果として「out of Float range」エラーになるのです。
数式中の小数値は、浮動小数点数(1.0/300)ではなく、Rational型になるようにすれば、「out of Float range」エラーは出なくなります。
a(7000,3500)*(Rational(1,300)**3500)*(Rational(299,300)**3500)
で計算してください。
あと、Rationalは分数型ですので、そのまま結果表示すると分数で表示されてしまいます。
ですが、これを単純に小数(Float)に変換しようとすると、その段階で「out of Float range」になってしまいます。
一手間かかりますが、require "bigdecimal"した上で、
result = a(7000,3500)*(Rational(1,300)**3500)*(Rational(299,300)**3500)
puts BigDecimal(result.numerator.to_s,1000)/BigDecimal(result.denominator.to_s,1000)
とでもすれば、小数で表示できます。
ちなみに、そうやって上記結果を表示すると、
0.15(略)E-6569
と表示されますが、これは「0.(0が6569個)15(以下略)」という意味です。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
CSSのhtmlへの紐付けについ...
-
(再質問)エクセルのマクロボ...
-
ビーリアルのユーザー名を変え...
-
1、Rstudioで回帰直線を求める...
-
パソコンのスクリーンセーバー...
-
Ruby on railsをrails sで立ち...
-
Accessで文字列のバイト数読み込み
-
Ruby require ライブラリー
-
VBScriptでExcel(2019)上のデー...
-
ruby OpenURI::Meta
-
ruby while式
-
ruby loopメソッド 変数(再喝)
-
ruby 配列
-
ruby loopメソッド 変数
-
ruby クラス・オブジェクト・イ...
-
ルビー言語 ライブラリー 追記
-
ruby raise句
-
ruby begin句
-
ruby ensure句
-
ルビー言語 ライブラリー(再々...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Ruby require ライブラリー
-
ruby loopメソッド 変数(再喝)
-
(再質問)エクセルのマクロボ...
-
ruby OpenURI::Meta
-
ruby while式
-
ruby loopメソッド 変数
-
1、Rstudioで回帰直線を求める...
-
パソコンのスクリーンセーバー...
-
ビーリアルのユーザー名を変え...
-
ruby 配列
-
C言語の入力した文字を反転させ...
-
ruby クラス・オブジェクト・イ...
-
ルビー言語 ライブラリー 追記
-
100万件越えCSVから条件を満た...
-
ルビー言語 csvファイル 続き
-
Ruby newメソッド
-
教えてください
-
ruby raise句
-
英数字を含む文字列(0-9,A-Z)...
-
pythonエラー
おすすめ情報