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?

30
demandé sur Daniel C. Sobral 2009-09-06 09:19:11

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.

14
répondu Redder 2013-07-16 18:37:57

Essayez Grandes Racines Carrées . Il utilise la méthode de Newton pour approximer des solutions telles que les racines carrées.

12
répondu cletus 2018-02-20 16:55:32

(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.

1
répondu quant_dev 2009-09-06 18:43:17