Opérateur égal pour les zéros (BigDecimal / Double) en Java

Manish Mulani:

Quelques observations intéressantes pour l'opérateur égal à 0 et 0,0

  1. new Double(0.0).equals(0)renvoie false, tandis que new Double(0.0).equals(0.0)renvoie true.

  2. BigDecimal.ZERO.equals(BigDecimal.valueOf(0.0))renvoie false, tandis que BigDecimal.ZERO.equals(BigDecimal.valueOf(0))renvoie true.

On dirait que la comparaison de chaînes est en cours dans les deux cas. Quelqu'un pourrait-il jeter un peu de lumière là-dessus.

Merci.

assylies:

BigDecimal 'equals' compare la valeur et l'échelle. Si vous souhaitez uniquement comparer des valeurs (0 == 0,0), vous devez utiliser compareTo:

BigDecimal.ZERO.compareTo(BigDecimal.valueOf(0.0)) == 0 //true
BigDecimal.ZERO.compareTo(BigDecimal.valueOf(0)) == 0 //true

Voir le javadoc .

Quant à la comparaison Double, comme expliqué par d'autres réponses, vous comparez un Double avec un Integer in new Double(0.0).equals(0), qui renvoie falsecar les objets ont des types différents. Pour référence, le code de la méthode equals dans JDK 7 est:

public boolean equals(Object obj) {
    return (obj instanceof Double)
           && (doubleToLongBits(((Double)obj).value) ==
                  doubleToLongBits(value));
}

Dans votre cas, (obj instanceof Double)c'est faux.

Cet article est collecté sur Internet, veuillez indiquer la source lors de la réimpression.

En cas d'infraction, veuillez [email protected] Supprimer.

modifier le
0

laisse moi dire quelques mots

0commentaires
connexionAprès avoir participé à la revue

Articles connexes

en utilisant ou "|" opérateur pour les instructions en java

L'opérateur Java + & <= n'est pas défini pour le ou les types d'arguments double, booléen

Java - Comment obtenir la sortie pour afficher les zéros de fin d'un double?

Opérateur "+" pour les classes Java

Suppression des zéros de fin de BigDecimal en Java

+ opérateur pour String en Java

Opérateur% pour BigInteger en Java

strcmp et opérateur relationnel double égal ne fonctionnant pas en C

Pourquoi Java effectue-t-il une conversion de type implicite de double en entier lors de l'utilisation de l'opérateur "plus égal"?

Est-il possible de redéfinir l'opérateur égal pour les tuples?

En quoi les opérateurs de comparaison PHP égalité (== double égal) et identité (=== triple égal) diffèrent?

Quel est l'opérateur modulo pour les longs en Java?

Comment surcharger un opérateur pour les types de données entier, flottant et double simultanément en C ++

L'opérateur - = n'est pas défini pour le ou les types d'argument double, booléen

renvoyer des masques booléens avec l'opérateur modulo pour les tableaux numpy avec exclusion des zéros

Java est égal à l'opérateur plus

MSYS2 GCC zéros sort double sur les opérations en virgule flottante avec SSE désactivé

Java arrondissant un double tronque les zéros

:: Opérateur (double-virgule) en Java 8

BigDecimal supprime les zéros de fin

'==' opérateur pour les en-têtes de colonne ?

Opérateur Modulo pour les génériques Java

Comment convertir BigDecimal en Double en Java?

Conversion double en BigDecimal en Java

C # Convertir la chaîne en double / décimal et revenir en chaîne, en conservant les zéros à la fin, en ajoutant des virgules pour des milliers

- -> - - opérateur en Java

^ opérateur en java

= opérateur en java

Pour vérifier les nombres mersenne en JAVA à l'aide de l'opérateur au niveau du bit

TOP liste

  1. 1

    J'ai besoin de savoir si ces deux phrases sont les mêmes en programmation

  2. 2

    Javascript indiquant "impossible de définir la propriété 'innerHTML' sur null"

  3. 3

    Nextcloud avec Docker: impossible de créer ou d'écrire dans le répertoire de données

  4. 4

    La taille de la forme n'est pas égale à la taille de la cellule du tableau et ajuste le texte à l'intérieur de la forme

  5. 5

    Trouver l'intersection et l'union de deux rectangles

  6. 6

    Comment changer la couleur de la police dans R?

  7. 7

    Empêcher l'allocation de mémoire dans la génération de combinaison récursive

  8. 8

    Référencement des assemblys de structure .net 4.7 dans la solution .net core 2

  9. 9

    Compter combien de fois un nombre apparaît dans un tableau aléatoire

  10. 10

    Pourquoi utiliser Asyncio ne réduit pas le temps d'exécution global en Python et n'exécute pas les fonctions simultanément?

  11. 11

    Comment convertir une chaîne en tuple en utilisant `reads`?

  12. 12

    java.lang.ClassNotFoundException: oracle.jdbc.driver.OracleDriver

  13. 13

    comment afficher un bouton au-dessus d'un autre élément ?

  14. 14

    Création d'un nouvel objet d'une classe avec un nouveau nom en cliquant sur un bouton dans java swing

  15. 15

    comment supprimer "compte de connexion google" à des fins de développement - actions sur google

  16. 16

    Restauration de la sauvegarde de la base de données SQL Server sur la version inférieure

  17. 17

    Créer un graphique à barres avec une fréquence relative / à partir d'un objet de table dans R

  18. 18

    Création d'un rappel python pour une fonction C à partir d'une DLL avec un tampon char.

  19. 19

    java.lang.NoClassDefFoundError: org / springframework / data / repository / config / BootstrapMode

  20. 20

    comment le contrôle de tableau javascript devrait-il être

  21. 21

    impossible d'ouvrir un nouvel onglet dans react, ajoute localhost: 3000 sur le lien?

chaudétiquette

Archive