Maison > Java > javaDidacticiel > le corps du texte

Qu'est-ce que BigDecimal ? Créer une instance de BigDecimal

零下一度
Libérer: 2017-06-25 10:40:30
original
4093 Les gens l'ont consulté

Les types float et double sont principalement conçus pour les calculs scientifiques et les calculs techniques. Ils effectuent des opérations binaires en virgule flottante et sont soigneusement conçus pour fournir des calculs approximatifs plus précis sur une large plage de valeurs. Cependant, ils ne fournissent pas de résultats totalement précis et ne doivent pas être utilisés lorsque des résultats précis sont requis. Habituellement, les calculs commerciaux nécessitent souvent BigDecimal pour calculer des valeurs avec des exigences de grande précision. Par exemple,

  0.07 + 0.020.58 - 0.421.005 * 10015.1 / 1000
Copier après la connexion

Peu importe dans n'importe quel environnement, vous devez convertir le code to Seul le code machine binaire peut être reconnu par la machine. Lorsque les nombres à virgule flottante sont générés directement, la précision sera conservée. Cependant, lorsque les nombres à virgule flottante sont calculés, la précision peut être perdue. Dans ce cas, BigDecimal est nécessaire pour. calcul.

1. Créer BigDecimal

BigDecimal a un constructeur qui prend un nombre à virgule flottante double précision comme paramètre. En fait, lorsque des nombres à virgule flottante sont transmis pour. calcul, la précision sera quand même perdue.

  =  BigDecimal(1.005=  BigDecimal(100=  BigDecimal("1.005"=  BigDecimal("100"100.49999999999998934185896359849721193313598632812500
100.500
Copier après la connexion

Mais vous pouvez constater que lorsque vous transmettez une chaîne, vous obtenez des résultats précis, et BigDecimal.valueOf(double val) peut également obtenir des résultats précis. Vous pouvez voir le code source de BigDecimal.valueOf(double. val) ci-dessous

public static BigDecimal valueOf(double val) {// Reminder: a zero double returns '0.0', so we cannot fastpath// to use the constant ZERO.  This might be important enough to// justify a factory approach, a cache, or a few private// constants, later.return new BigDecimal(Double.toString(val));
    }
Copier après la connexion

Cette méthode convertit d'abord les paramètres en type String, puis appelle les paramètres de construction dont les paramètres sont de type String, donc lorsque vous utilisez BigDecimal, essayez de utilisez le nouveau BigDecimal(String val) ou BigDecimal.valueof(double val) pour garantir des résultats précis.

2.compareTo

BigDecimal utilise compareTo() pour comparer les tailles.

  0.05).compareTo(BigDecimal.valueOf(0.040.04).compareTo(BigDecimal.valueOf(0.040.03).compareTo(BigDecimal.valueOf(0.04
Copier après la connexion

BigDecimal.compareTo(BigDecimal val)

Quand Renvoie 1 lorsque BigDecimal est supérieur à val,

renvoie -1 lorsque BigDecimal est inférieur à val,

renvoie 0 lorsque BigDecimal est égal à val.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal