Maison >Java >javaDidacticiel >Qu'est-ce que BigDecimal ? Créer une instance de BigDecimal

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

零下一度
零下一度original
2017-06-25 10:40:304139parcourir

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

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

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));
    }

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

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!

Déclaration:
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