Comment faire une puissance fractionnaire sur BigDecimal en Java?

Dans mon petit projet, j'ai besoin de faire quelque chose comme les Mathématiques.pow(7777.66, 5555.44) seulement avec de TRÈS grands nombres. Je suis tombé sur quelques solutions:

  • Utilisez le double, mais les chiffres sont trop gros
  • Utilisation BigDecimal.pow mais pas de support pour les fractions de
  • Utiliser le X^(A+B)=X^A*X^B de la formule B est le reste de la seconde num), mais encore une fois pas de support pour big X ou grand parce que j'ai encore convertir à double
  • Utiliser un développement en série de Taylor de l'algorithme ou quelque chose comme ça - je ne suis pas très bon en maths, ce qui est ma dernière option, si je ne trouve pas de solutions (certaines bibliothèques ou une formule pour (A+B)^(C+D)).

Quelqu'un sait d'une bibliothèque ou d'une solution de facilité? J'ai pensé que beaucoup de gens traitent le même problème...

p.s.
J'ai trouvé une bibliothèque appelée ApFloat qui prétend faire environ, mais les résultats que j'ai obtenus étaient tellement approximatif que même 8^2 m'a donné 60...

  • Pourriez-vous donner un exemple de ce que vous essayez d'accomplir, 8^2 != 64 sons pauvres et 2^100^100 doit être revue à la baisse.
  • Je dois dire que j'ai essayé la formule de truc, et il fonctionne très bien jusqu'à présent, même avec des nombres avec des millions de chiffres! (On dirait que je ne sais pas tout sur double et int)... Exemples: 50!^10! = 12.50911317862076252364259*10^233996181 50!^0.06 = 7395.788659356498101260513 Le code est un peu long à poster ici, mais vous voyez l'idée de X^(A+B)=X^A*X^B... Maintenant, je vais essayer de comprendre pourquoi et comment (et si) il fonctionne vraiment avec les nombres énormes.
  • J'ai déjà donné la solution il y a stackoverflow.com/questions/11848887/...
InformationsquelleAutor Eugene Marin | 2010-08-26