Existe-t-il des bibliothèques pour la racine carrée sur BigDecimal? [fermé]
Existe-t-il des bibliothèques pour la racine carrée sur BigDecimal en Java?
3 réponses
JScience v4.3.1 est un Real
la classe qui semble être l'équivalent de BigDecimal
et qui pourraient vous aider. Un exemple d'utilisation:
// The Square Root of Two, to 30 digits
// According to "The Square Root of Two, to 5 million digits."
// Source: http://www.gutenberg.org/files/129/129.txt
System.out.println("1.41421356237309504880168872420");
// Using JScience with 50 digits precision
Real.setExactPrecision(50);
System.out.println(Real.valueOf(2).sqrt());
// Using default java implementation
System.out.println(Math.sqrt(2));
> 1.41421356237309504880168872420
> 1.414213562373095048801689
> 1.4142135623730951
Edit : mise à jour du code et des liens pour refléter la version actuelle à l'époque (v4.3.1). Basé sur @ ile et @ Tomasz commentaires, merci.
Essayez Grandes Racines Carrées . Il utilise la méthode de Newton pour approximer des solutions telles que les racines carrées.
(C'est peut être pas une solution pour vous)
Tant que votre BigDecimal est dans la plage de double, vous pouvez convertir le BigDecimal en double, utilisez Math.sqrt () et promouvoir le double retour à BigDecimal. Ce sera probablement plus rapide que d'effectuer le calcul sur BigDecimals. Dans de nombreux cas, la perte de précision due à la conversion entre les types sera négligeable par rapport à l'erreur inévitable dans le calcul de la racine carrée.