非常に大きな乗算の桁数(それぞれ約300桁)を見つける必要があります。私は実際に計算を実行せずに製品が桁数を予測するというトリックがあるのだろうかと思っていました。次のように乗算の桁数を予測する
答えて
桁数は、2つの被乗数のbase 10 logプラス1の丸め(ダウン)合計によって正確を計算することができる。
public static void main(String[] args) {
DecimalFormat f = new DecimalFormat("#");
double num1 = 123456789d;
double num2 = 314159265358979d;
// Here's the line that does the work:
int numberOfDigits = (int) (Math.log10(num1) + Math.log10(num2)) + 1;
System.out.println(f.format(num1) + " * " + f.format(num2) + " = " +
f.format((num1 * num2)) + ", which has " + numberOfDigits + " digits");
}
出力:
123456789* 314159265358979 = 3878509413969699000000000000000000, which has 34 digits
これは、任意に大きな数値で動作します。
クリストバリトの答えがかなり得られます。 「約」をより正確にしてみましょう。
最初の数字がn桁で、2番目の数字がmであるとします。それらの最小値はそれぞれ10 ^(n-1)と10 ^(m-1)です。その製品は可能な限り低く、10 ^(m + n-2)であり、これはm + n-1桁である。
最高値はそれぞれ10^n - 1と10^m - 1です。その製品は最高になり、10 ^(n + m)-10^n - 10^m + 1で、これは最大でm + n桁です。
したがって、n桁の数字にm桁の数字を掛けると、m + n-1またはm + nの数字が表示されます。
同様のロジックは、それが一般的に、nは桁数は約2×n個、例えばだベース2
他のポスターが記述している底10の対数は、簡単な技術。しかし、基底2の対数を見つけ、(log 2)/(log 10)を掛けることができます。これは約0.693です。基本2の対数は、バイナリ表現で最も重要な1の位置を見つけるだけで浮動小数点に頼らずに見つけることができます。その後、69を掛けて100で除算すると、整数演算以外の何も使用せずにおおよその桁数を見つけることができます。おそらく実際にはこのようなことはしてはいけません。なぜなら、おそらく実際には問題の価値があることはありません。かわいい、でも、いいえ? –
ここにあなたのコメントを答えに加えてみませんか? –
私は実際には本当に役に立つとは思わないので、 –
- 1. NSDecimal数乗算
- 2. 行列乗算カーネルのgflopsを測定する方法は?
- 3. 変数の乗算
- 4. 実数の乗算
- 5. Sklearn予測関数
- 6. Pythonの予測に関するエラーを計算するには?
- 7. C++の16進数計算の乗算
- 8. 複数の行列乗算
- 9. python - 数学の乗算
- 10. Pythonの複素数乗算
- 11. MIPS:整数の乗算と除算
- 12. マルチターゲット予測とマルチクラス予測
- 13. SARIMAXモデル予測外予測
- 14. javaの偶数桁と奇数桁の合計を計算する際のエラー
- 15. 複数ラベルのテンソルフロー予測
- 16. 予測誤差のために計算を中止する
- 17. Chainerで数値を予測するベストプラクティス
- 18. NHibernateに算術演算予測がありますか?
- 19. R予測パッケージの予測値の範囲を制限する
- 20. 予測マージン/予測が変数を一定に保持するR
- 21. 乗算定義関数
- 22. 小数点乗算は、PHP
- 23. T-SQL小数点乗算
- 24. R h20ニューラルネットワークの予測予測
- 25. Java - パラメータによる変数の乗算
- 26. リストに属する2〜3桁の数字の算術演算
- 27. Excel対数予測で補間する
- 28. plm関数で予測するR
- 29. R予測関数エラー
- 30. R予測因子変数
などの他の塩基についても同様です。 – cristobalito
次のように桁数を指定できます: 'floor(log x)* floor(log y)<=数字(x * y)<= ceil(log x)* ceil(log y)' log base 10. – davin
@critobalito it more n + mここで、nとmは各式の桁数です。例えば'9 * 9 = 81'' 999 * 9 = 8991' – Lynch