HOWTO · Java

Convertir Double en Int en Java

Cet article explique comment convertir un double en entier en Java.

Sur cette page

Pour convertir un double Java en int, utilisez (int) value pour tronquer vers zéro, (int) Math.round(value) pour obtenir l’entier le plus proche, ou value.intValue() si la valeur est un objet Double. Par exemple, avec 12.9, le cast et intValue() donnent 12, tandis que l’arrondi suivi du cast donne 13.

Choisissez la méthode selon le résultat souhaité : le cast est le plus simple pour tronquer, Math.round() arrondit à l’entier le plus proche, et Double.intValue() est pratique si vous avez déjà un objet wrapper. Dans les exemples ci-dessous, chaque méthode donne un int ; l’appel à Math.round() renvoie d’abord un long, avant le cast explicite.

Convertir un double en int en Java avec un cast

Un cast convertit un double primitif en int primitif. Java tronque la partie fractionnaire vers zéro ; il n’arrondit pas à l’entier inférieur. Par exemple, 12.9 devient 12. Cette conversion peut aussi entraîner une perte d’information, car un int ne peut pas conserver la partie fractionnaire. Consultez le guide sur le cast en Java pour en savoir plus sur la différence entre conversions élargissantes et réductrices.

La syntaxe est (int) doubleValue. Voici un exemple complet que vous pouvez exécuter sous le nom DoubleToIntConversion.java :

Exécutez cet exemple :

public class DoubleToIntConversion {
    public static void main(String[] args) {
        double value = 12.9;
        int result = (int) value;
        System.out.println("double: " + value);
        System.out.println("int: " + result);
    }
}

La sortie d’exécution fournie confirme que l’exemple produit 12 comme résultat de type int. La conversion tronque vers zéro les valeurs positives comme négatives : par exemple, -12.9 devient -12, et non -13.

Convertir un double en int en Java avec la méthode round()

Utilisez Math.round() pour obtenir l’entier le plus proche plutôt que de tronquer. Avec un argument de type double, Math.round() renvoie un long ; faites donc un cast explicite si le type de destination doit être int : (int) Math.round(value). Par exemple, 12.9 est arrondi à 13, tandis que 12.3 est arrondi à 12.

Le cast en int a ses propres limites de plage. Si le long arrondi est en dehors de la plage d’un int, sa conversion en int ne signale pas d’erreur : le résultat suit les règles de conversion réductrice de Java. Conservez la valeur dans un long si le résultat complet peut dépasser la plage d’un int.

Voici un exemple complet que vous pouvez exécuter sous le nom RoundDoubleToInt.java :

public class RoundDoubleToInt {
    public static void main(String[] args) {
        double value = 12.9;
        long rounded = Math.round(value);
        int result = (int) rounded;
        System.out.println("double: " + value);
        System.out.println("rounded long: " + rounded);
        System.out.println("int: " + result);
    }
}

La sortie d’exécution fournie confirme que Math.round() produit 13L, qui est ensuite converti en valeur int égale à 13.

Convertir un double en int en Java avec la méthode intValue()

intValue() est une méthode d’instance de la classe wrapper Double, et non du type primitif double. Appelez-la sur un objet Double pour obtenir un int. Comme un cast primitif, elle tronque vers zéro au lieu d’arrondir : un objet Double contenant 12.9 donne donc 12.

La syntaxe est wrapper.intValue(). Lors d’une affectation, Java peut convertir automatiquement un double primitif en objet Double, comme dans l’exemple ci-dessous. Enregistrez ce programme complet sous le nom DoubleWrapperToInt.java :

public class DoubleWrapperToInt {
    public static void main(String[] args) {
        Double value = 12.9;
        int result = value.intValue();
        System.out.println("Double: " + value);
        System.out.println("int: " + result);
    }
}

La sortie d’exécution fournie confirme que Double.intValue() renvoie 12 pour 12.9.

Si vous devez plutôt analyser du texte que convertir une valeur numérique existante, consultez comment convertir une chaîne hexadécimale en int en Java.