- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:java(android)のプログラミングについて)
Java(Android)プログラミングで確率計算を処理する方法
このQ&Aのポイント
- Java(Android)のプログラミングにおいて、確率計算の処理について困っています。
- 特に、階乗計算の数値が大きくなるため処理ができない状況です。
- 処理可能なコードの具体例や、簡単に処理できる公式について教えていただきたいです。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
x/(x + y) =1/(1 + y/x) =1 / (1 + (1-1/200)^9940 * (1/200)^60 / ((1-1/150)^9940 * (1/150)^60)) =1 / (1 + (199*150/(200*149))^9940 * (150/200)^60) =1 / (1 + (597/596)^9940 * (3/4)^60) これならオーバーフローさせずに計算できませんか。 ちなみに結果は、 x/(x + y)≒0.644980612
その他の回答 (3)
- osamuy
- ベストアンサー率42% (1231/2878)
回答No.3
ANo.2。無限値になるケースを考慮してないから、役立たないですね。
質問者
お礼
いえ、貴重なご意見ありがとうございました。
- osamuy
- ベストアンサー率42% (1231/2878)
回答No.2
noname#177743
回答No.1
Doubleで桁数が足りないような大きな数値を扱う場合には、BigIntegerやBigDecimalクラスを利用して処理することになるでしょう。この場合は実数を扱うのでしょうから、BigDecimalを利用すればよいでしょう。これらはAndroidでも利用可能です。 これらは、桁数無制限の巨大な値を扱うための専用クラスです。基本型ではなくオブジェクトですから四則演算の演算子は使えず、計算はすべてクラスに用意されたメソッドを使います。例えば、A + Bならば、A.add(B)という具合ですね。そのようにして計算式をメソッドによる記述に書き換えてやれば処理できると思います。 BigDecimalクラスについては以下を参照 http://developer.android.com/reference/java/math/BigDecimal.html
質問者
お礼
詳しい説明有難うございました。違うやり方で出来ましたが、貴重なご意見有難うございました。
お礼
丁寧なアドバイス有難うございます。このやり方で無事に出来ました。