Le plus simple consiste à recopier le code ci-dessous dans une classe nommée ConversionsNumeriques et de l’exécuter pour constater ce qui se passe.
ConversionsNumeriques
package fr.mer.gestion.semaine1; /** * TP0 : les conversions numériques avec des exemples (types primitifs, casting, parsing) */ public class ConversionsNumeriques { public static void main(String[] args) { System.out.println("╔═══════════════════════════════════════════════════════╗"); System.out.println("║ LES CONVERSIONS NUMÉRIQUES EN JAVA ║"); System.out.println("╚═══════════════════════════════════════════════════════╝"); System.out.println(); // ═══════════════════════════════════════ // 1. Conversion double vers int (troncature) // ═══════════════════════════════════════ System.out.println("1. Conversion double vers int (troncature)"); System.out.println(" ─────────────────────────────────────"); double prix = 19.99; int prixEntier = (int) prix; // un Cast explicite nécessaire System.out.println(" Prix original (double) : " + prix); System.out.println(" Prix entier (int) : " + prixEntier); System.out.println(" La partie décimale est PERDUE (troncature)"); System.out.println(" Équivalent COBOL : MOVE prix TO prix-entier"); System.out.println(); // ═══════════════════════════════════════ // 2. calcul avec conversion implicite // ═══════════════════════════════════════ System.out.println("2. Conversion implicite dans les calculs"); System.out.println(" ─────────────────────────────────────"); int quantite = 5; double total = prix * quantite; // int → double automatique System.out.println(" " + prix + " (double) × " + quantite + " (int)"); System.out.println(" = " + total + " (double)"); System.out.println(" Java convertit automatiquement int vers double"); System.out.println(); // ═══════════════════════════════════════ // 3. conversion String vers int (c'est du parsing) // ═══════════════════════════════════════ System.out.println("3. Conversion String vers int"); System.out.println(" ─────────────────────────────────────"); String texte = "1250"; int nombre = Integer.parseInt(texte); System.out.println(" Texte : \"" + texte + "\" (String)"); System.out.println(" Nombre : " + nombre + " (int)"); System.out.println(" Méthode : Integer.parseInt()"); System.out.println(); // ═══════════════════════════════════════ // 4. conversion int vers String // ═══════════════════════════════════════ System.out.println("4. Conversion de int vers String"); System.out.println(" ─────────────────────────────────────"); int valeur = 12345; String texteNombre1 = String.valueOf(valeur); String texteNombre2 = "" + valeur; // Alternative simple String texteNombre3 = Integer.toString(valeur); System.out.println(" Nombre : " + valeur); System.out.println(" Méthode 1 : String.valueOf() → \"" + texteNombre1 + "\""); System.out.println(" Méthode 2 : \"\" + nombre → \"" + texteNombre2 + "\""); System.out.println(" Méthode 3 : Integer.toString() → \"" + texteNombre3 + "\""); System.out.println(); // ═══════════════════════════════════════ // 5. Faires des arrondis vers troncature // ═══════════════════════════════════════ System.out.println("5. Arrondi vers troncature"); System.out.println(" ─────────────────────────────────────"); double valeur1 = 19.3; double valeur2 = 19.7; int tronque1 = (int) valeur1; int tronque2 = (int) valeur2; long arrondi1 = Math.round(valeur1); long arrondi2 = Math.round(valeur2); System.out.println(" Valeur : " + valeur1); System.out.println(" Tronqué : " + tronque1 + " | Arrondi : " + arrondi1); System.out.println(); System.out.println(" Valeur : " + valeur2); System.out.println(" Tronqué : " + tronque2 + " | Arrondi : " + arrondi2); System.out.println(); // ═══════════════════════════════════════ // 6. Gérer les erreurs de conversions // ═══════════════════════════════════════ System.out.println("6. Gestion des erreurs de conversion"); System.out.println(" ─────────────────────────────────────"); String texteValide = "123"; String texteInvalide = "abcdef123"; // la conversion est valide try { int nb1 = Integer.parseInt(texteValide); System.out.println(" ✓ \"" + texteValide + "\" → " + nb1); } catch (NumberFormatException e) { System.out.println(" ✗ Erreur de conversion"); } // ici, la conversion est invalide try { int nb2 = Integer.parseInt(texteInvalide); System.out.println(" ✓ \"" + texteInvalide + "\" → " + nb2); } catch (NumberFormatException e) { System.out.println(" ✗ \"" + texteInvalide + "\" ne peut pas être converti !"); System.out.println(" Message : " + e.getMessage()); } System.out.println(); // ══════════════════════════════════════════ // 7. Conversions entre les types numériques // ═══════════════════════════════════════════ System.out.println("7. Hiérarchie des types numériques"); System.out.println(" ─────────────────────────────────────"); System.out.println(" byte (8 bits) → short (16 bits) → int (32 bits)"); System.out.println(" → long (64 bits) → float (32 bits) → double (64 bits)"); System.out.println(); // conversions ascendantes (implicites) byte petitNombre = 100; short moyenNombre = petitNombre; // implicite int grandNombre = moyenNombre; // implicite long tresGrandNombre = grandNombre; // implicite double reel = tresGrandNombre; // implicite System.out.println(" Conversions implicites :"); System.out.println(" byte : " + petitNombre); System.out.println(" short : " + moyenNombre); System.out.println(" int : " + grandNombre); System.out.println(" long : " + tresGrandNombre); System.out.println(" double: " + reel); System.out.println(); // conversions descendantes (explicites - on appelle cela le casting) double grand = 1000.75; int moyen = (int) grand; // le Cast est nécessaire short petit = (short) moyen; // le Cast est nécessaire byte tresPetit = (byte) petit; // le Cast est nécessaire System.out.println(" conversions explicites :"); System.out.println(" double: " + grand); System.out.println(" int : " + moyen + " (partie décimale perdue)"); System.out.println(" short : " + petit); System.out.println(" byte : " + tresPetit); System.out.println(); // ═══════════════════════════════════════ // 8. Sting vers double // ═══════════════════════════════════════ System.out.println("8. Autres conversions avec les String"); System.out.println(" ─────────────────────────────────────"); String prixTexte = "99.99"; double prixDouble = Double.parseDouble(prixTexte); System.out.println(" String → double : \"" + prixTexte + "\" → " + prixDouble); String longTexte = "9876543210"; long longNombre = Long.parseLong(longTexte); System.out.println(" String → long : \"" + longTexte + "\" → " + longNombre); String boolTexte = "true"; boolean boolValeur = Boolean.parseBoolean(boolTexte); System.out.println(" String → boolean: \"" + boolTexte + "\" → " + boolValeur); System.out.println(); System.out.println("╔═══════════════════════════════════════════════════════╗"); System.out.println("║ Règle : Il faut toujours gérer les exceptions ║"); System.out.println("║ lors des conversions String vers un nombre ! ║"); System.out.println("╚═══════════════════════════════════════════════════════╝"); } }