Existe-il des bibliothèques pour la Racine Carrée de plus de BigDecimal?
Existe-il des bibliothèques pour la Racine Carrée de plus de BigDecimal en Java?
- Je me demande, pourquoi avez-vous besoin pour calculer des racines carrées d'un BigDecimal? Double a trop petite de gamme?
- Pour la même raison que quelqu'un utilise BigDecimal: double manque de précision.
- Daniel, mais aussi le calcul de la racine carrée. Vous ne pouvez pas calculer sqrt(2) avec une précision infinie. Utilisant la méthode de Newton pour calculer la racine carrée introduit une erreur de son propre, inhérente à l'algorithme.
- Tre, pas de. Double un BigDecimal sont foncièrement différents. "Double précision" dépend du nombre que vous représentez. Certains sont tout simplement impossible à représenter dans toute précision. Avec BigDecimal la précision peut être fixé arbitrairement, et, à l'intérieur de cette précision, vous pouvez représenter n'importe quel nombre fractionnaire.
- De tels chiffres 1/3 ne peut pas être représenté 100% précisément dans la base décimale sans l'aide d'un nombre infini de chiffres. Ce qui est plus, les nombres comme sqrt(2) ne peut être représenté dans toute la base, sans l'aide d'un nombre infini de chiffres. Cette mathématique est un fait. Comme pour le calcul de racines carrées, à l'aide de la méthode de Newton vous donne une autre source d'imprécision. Comment savez-vous, à l'aide de la méthode de Newton, que les N premiers chiffres de votre calculée racine carrée sont corrects? Il y a des méthodes pour cela, mais la méthode de Newton n'est pas l'un d'eux: en.wikipedia.org/wiki/Methods_of_computing_square_roots
- "Un peu d'apprentissage est une chose dangereuse; trinque, le goût ou ne pas le Pierian printemps: il y a peu profonde de courants d'air, intoxiquent le cerveau, et de boire en grande partie sobers nous."
- êtes-vous une erreur de lecture sur le but? Avec BigDecimal je peux contrôler la précision, avec un nombre à virgule flottante, je ne peux pas. Avec BigDecimal je peux dire catégoriquement que ma précision est, par exemple, 1 point décimal. Donc, essayez ceci, par exemple: 10000000000000000D + 0.1 D == 1E16 et me dire le résultat.
- Daniel, vous êtes ignorant le contexte de la question: le calcul de la racine carrée. Pensez à la méthode de Newton calcule la racine carrée, et si le fait d'avoir une précision arbitraire peut vous aider à trouver le résultat avec une précision arbitraire.
- Eh bien, si vous voulez critiquer la réponse, faites-le, ci-dessous la réponse. Ci-dessous la question que je suis le seul à discuter de la question.
- Eh bien, mec, j'ai commenté la question dans mon premier commentaire, et puis vous sont venus et ont détourné le sujet.
- Pas de hi-jacking. J'en ai besoin pour la même raison que quelqu'un utilise BigDecimal: Double manque de précision. BigDecimal me donne de la précision, je lui demande de, le Double n'a pas. Vous ensuite présenté une critique de la méthode de Newton, qui n'est pas pertinent pour la question. J'ai réfuté les déclarations restantes, et vous avez apporté à la méthode de Newton à nouveau. Eh bien, ne critiquer ci-dessous la réponse qui fait référence à la méthode de Newton, et de laisser la question du bien-ou apporter quelque chose de nouveau et de pertinent pour elle.
- OK, donc, en utilisant BigDecimal, vous pouvez avoir plus de chiffres dans votre résultat final (la racine carrée). Avez-vous vérifier que ces chiffres ont aucun sens?
Vous devez vous connecter pour publier un commentaire.
JScience v4.3.1 a un
Réel
classe qui semble être l'équivalent deBigDecimal
et qui pourraient vous aider. Un exemple d'utilisation:Modifier: mise à Jour du code et les liens pour refléter la version actuelle à l'époque (v4.3.1). Basé sur @ile un @Tomasz commentaires, merci.
Essayer Big Racines Carrées. Il utilise le La méthode de Newton pour l'approximation des solutions telles que des racines carrées.
(Ce n'est peut être pas une solution pour vous)
Tant que votre BigDecimal est dans la gamme de double, vous pouvez convertir le BigDecimal à double, l'utilisation des Mathématiques.sqrt() et de promouvoir la double retour à BigDecimal. Il sera probablement plus rapide que de mener à bien le calcul sur BigDecimals. Dans de nombreux cas, la perte de précision due à la conversion entre les types seront négligeables par rapport à l'inévitable erreur dans le calcul de la racine carrée.