
No.3ベストアンサー
- 回答日時:
標準ではできないのでBigDecimal用のpowを自作するしかないですね。
Math.powを浮動小数点演算機能のないCPUで実装するのと同様に適当な近似式で計算するしかないですが、任意精度に対応するためには精度と丸めに注意して作成する必要があります。
この実装は簡単ではないでしょう。
BigDecimalはBigIntegerのunscaledValueに対して小数点以下の有効桁数を示すscaleで小数点位置を示すことで小数を表現できるようにしています。
powをlogとexpで表現しても、scale部分のlogを常用対数で表現するだけならともかくunscaledValueの部分はBigIntegerの対数を計算しなければいけません。またexpも整数乗ならともかく小数乗だと四則演算ではすみません。logやexpを実装するのも結構面倒な話です。
なお、指数を分数表現しても1/2乗は平方根、1/3乗は立方根と、これまた簡単な計算ではないです。
任意精度を出すとなると、その精度まで計算するのに必要な級数あるいは近似有理関数式を算出してそれで計算するというプログラムになるでしょう。浮動小数点数の計算と比べても格段に難しいプログラムになることと想像できます。
No.2
- 回答日時:
分数にすればいいんじゃないですか?
0.03を3/100とかにして乗数、被乗数ともに分数にして分解してあげればそれぞれはint型のPowと掛算(もしくは割り算)に置き換えられませんか?
No.1
- 回答日時:
考え方はいくつかあると思うけど, たとえば
a^b = exp (b*log(a))
とする手はあると思う. log は scale や unscaledValue なんかから計算することができるし, b*log(a) が求まれば exp (b*log(a)) は単純.
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# このプログラミングの問題を教えてほしいです。 キーボードからデータ数nとn個のデータを入力し、平均値 3 2022/12/19 22:51
- Visual Basic(VBA) Excel のユーザー定義関数でソルバーが動作しない 1 2022/09/05 19:51
- Java Java モンスターブリーダー 1 2023/02/05 09:44
- C言語・C++・C# c言語について 下記の計算結果を出力するコードを記述する問題で 0-4 3.14×2 5÷3 30÷ 5 2022/05/17 22:41
- 医療事務・調剤薬局事務 入院会計のお仕事 1 2023/05/28 15:45
- Java Java 年数計算 3 2023/01/28 10:52
- Java Java配列の問題を教えてください。 乱数で20個出力し、最大、最小、合計、平均を求め、更に昇順にソ 3 2023/07/10 18:32
- Excel(エクセル) 電卓は正しいのに エクセルで計算させると間違った答えです。なぜ? 7 2022/08/11 07:04
- C言語・C++・C# C言語 プログラミング 4 2022/05/22 11:53
- 数学 多様体について質問です。 Rを実数全体としてf:S^n={(p_1,…,p_(n+1)∈R^(n+1 2 2023/06/24 00:54
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBAの再計算が反映されない件に...
-
65536は2の何乗なのでしょうか?
-
Visual C++でdebugとreleaseで...
-
数値計算の高速化 (cos, sin, exp)
-
CとFORTRANの計算速度はどちら...
-
エクセルで特定のセルのみを任...
-
DLL(VC++で作った)で稼動中の...
-
排他的論理和 BCC(水平パリテ...
-
なぜオーバーフローになるので...
-
三菱シーケンサー works2 の日...
-
モジュロ
-
趣味で「乗換案内」みたいなソ...
-
駅間の距離を求め運賃計算するJ...
-
C言語の課題で、1年の秒数を計...
-
理由がわかりません・・・
-
Windows のlog()の計算方法
-
VBでReplace
-
時間の足し算 C++Builder
-
matlabで計算終了
-
VBA入力フォームで労働時間の計...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
65536は2の何乗なのでしょうか?
-
VBAの再計算が反映されない件に...
-
排他的論理和 BCC(水平パリテ...
-
EXCELなどで「返す」という表現
-
バッチファイルでウインドウを...
-
エクセルで特定のセルのみを任...
-
matlabで計算終了
-
モジュラス103の計算とは何でし...
-
変化させるセルが変化しない
-
数値計算の高速化 (cos, sin, exp)
-
CとFORTRANの計算速度はどちら...
-
モジュロ
-
スレッド処理からダイアログを...
-
時間(ミリ秒を含む)の引き算
-
VB6で正確なミリ秒を計測したい...
-
60進数の四則計算
-
PHPとJavaでSHA256の結果を同じ...
-
C言語についてです。 再帰を使...
-
なぜオーバーフローになるので...
-
VBA入力フォームで労働時間の計...
おすすめ情報