- ベストアンサー
BigDecimalクラスを使ってandroidの開発で小さな数値を扱う方法は?
- JAVA初心者が趣味でandroidアプリの開発をしていますが、BigDecimalクラスを使って小さな数値を正確に扱う方法について困っています。
- 掛け算では処理できるが、BigDecimalクラスを使った除算の処理でエラーが発生しています。
- どうにかBigDecimalクラスを使って小さな数値の除算を処理する方法はないでしょうか?よろしくお願いします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
> a12 = 0E-32 (BigDecimal型) > all = 0E-33 (BigDecimal型) Androidを使ったことは無いですが、これは両方共ゼロですよね?(0の10^-32、0の10^-33) > BigDecimal a12 = new BigDecimal(0).setScale(32); > BigDecimal all = new BigDecimal(0).setScale(33); ならば、0で割ることはできないのでdivideできないです。
その他の回答 (2)
- wormhole
- ベストアンサー率28% (1626/5665)
>java.lang.ArithmeticException: Division by zeroと書いています。 メッセージは英語ですけど尻込みしないで読んでみてください。 何て書いてあるのかわかりますか? >wormholeさんの言う通り0/0で計算処理できないということですかね? 私ではなくtaketonさんです。 taketonさんのいわれたとおりなのかどうかは上に書いたようにエラーメッセージを読めばわかります。
お礼
無事に解決できました。お手数おかけして申し訳ございませんでした
補足
何度も申し訳ございません。 java.lang.ArithmeticException: Division by zero 割り算の数値が0になっているので除外する。 taketonさんの言われたとおりだと思います。
- wormhole
- ベストアンサー率28% (1626/5665)
>エラーが出てしまいます。 「エラー」の一言で済まさずに、どのようなエラーが起きたのか メッセージが出力されているならそれもそのまま書きましょう。 それが解決の糸口になるんですから。
補足
分かりにくい説明で申し訳ございません。 LogCatでみると java.lang.ArithmeticException: Division by zeroと書いています。 エラー箇所はBigDecimal x = a12.divide(all, 3, BigDecimal.ROUND_UP );の所です。 wormholeさんの言う通り0/0で計算処理できないということですかね?
お礼
ありがとうございます。無事に解決できました。