Casting and Range · Conversion de types et Plages
| English | Français |
|---|---|
| casting/ˈkæstɪŋ/ | conversion |
| truncates/ˈtrʌŋkeɪts/ | tronque |
| widening/ˈwaɪdənɪŋ/ | élargissement |
| narrowing/ˈnærəʊɪŋ/ | rétrécissement |
| range/reɪndʒ/ | range |
| overflow/ˌəʊvəˈfləʊ/ | débordement |
Changing a value's type
- Casting 类型转换 converts a value from one type to another.
- Write the target type in parentheses:
(double) 5gives5.0;(int) 3.9gives3. - Casting to
inttruncates 截断 — it drops the decimal part, it does not round. (int) 3.9is3, and(int) -2.7is-2(toward zero).
Changer le type d'une valeur
- Le Casting 类型转换 convertit une valeur d'un type à un autre.
- Écrivez le type cible entre parenthèses :
(double) 5donne5.0;(int) 3.9donne3. - Casting vers
inttronque 截断 — il retire la partie décimale, il ne ronde pas. (int) 3.9est3, et(int) -2.7est-2(vers zéro).
Widening happens automatically
- Going from a smaller type to a larger one (
int→double) is widening 拓宽. - Widening is safe, so Java does it automatically:
double d = 5;stores5.0. - No information is lost going from
inttodouble. - You rarely need to write a widening cast, but it's allowed.
L'élargissement se fait automatiquement
- Passer d'un type plus petit à un plus grand (
int→double) est un élargissement 拓宽. - L'élargissement est sûr, donc Java le fait automatiquement :
double d = 5;stocke5.0. - Aucune information n'est perdue en passant de
intàdouble. - Vous n'avez rarement besoin d'écrire un casting d'élargissement, mais c'est autorisé.
Narrowing needs an explicit cast
- Going from larger to smaller (
double→int) is narrowing — it can lose data. - Java requires an explicit cast:
int n = (int) 3.9;(without the cast, it won't compile). - The cast is you promising "I know I'm dropping the decimals."
- Narrowing truncates toward zero.
Le rétrécissement nécessite un casting explicite
- Passer d'un type plus grand à un plus petit (
double→int) est un rétrécissement — cela peut perdre des données. - Java exige un casting explicite :
int n = (int) 3.9;(sans le casting, cela ne compile pas). - Le casting est votre promesse "Je sais que je retire les décimales."
- Le rétrécissement tronque vers zéro.
Range and overflow
- Each type has a fixed range 取值范围:
intholds roughly ±2.1 billion. - Exceeding the range causes overflow 溢出 — the value wraps around to a wrong number.
- No error is raised; the result is just silently wrong.
- For huge whole numbers, a bigger type (like
long) is needed.
Plage et débordement
- Chaque type a une plage de valeurs fixe :
intcontient environ ±2.1 milliards. - Dépasser la plage cause un débordement 溢出 — la valeur rebondit sur un mauvais nombre.
- Aucune erreur n'est levée ; le résultat est simplement faux silencieusement.
- Pour de grands nombres entiers, un type plus grand (comme
long) est nécessaire.
Casting to int truncates — it does NOT round. (int) 3.9 is 3, not 4; (int) 2.99 is 2. To force floating-point division, cast one operand: (double) 7 / 2 is 3.5, but (int)(7.0 / 2) is 3. And watch overflow: an int result beyond ±2.1 billion wraps silently, with no error.
La conversion en int tronque — elle ne fait PAS d'arrondi. (int) 3.9 est 3, pas 4 ; (int) 2.99 est 2. Pour forcer une division en virgule flottante, convertissez l'un des opérandes : (double) 7 / 2 vaut 3.5, mais (int)(7.0 / 2) vaut 3. Et attention au débordement : un résultat int dépassant ±2.1 milliards s'enroule silencieusement, sans erreur.
Averaging two ints correctly:
int a = 7, b = 2;int avg = a / b;→3(int division drops the remainder — probably not what you want).double avg = (double) a / b;→3.5(casting one side forces decimal division).
Moyenne correcte de deux ints :
int a = 7, b = 2;int avg = a / b;→3(la division d'entiers ignore le reste — probablement pas ce que vous voulez).double avg = (double) a / b;→3.5(caster un côté force la division décimale).
Casting (type) value converts between types. int → double (widening) is automatic and safe; double → int (narrowing) needs an explicit cast and truncates toward zero (no rounding). Each type has a fixed range; exceeding it causes silent overflow.
Le Casting (type) value convertit entre types. int → double (élargissement) est automatique et sûr ; double → int (rétrécissement) nécessite un casting explicite et tronque vers zéro (pas de rondage). Chaque type a une plage fixe ; la dépasser cause un débordement silencieux.
Casting between int and double · Conversion entre int et double
(int) truncates 3.9 to 3; casting one side gives 3.5. · (int) tronque 3.9 en 3 ; convertir un côté donne 3.5.
What is the value of (int) 3.9 in Java? · Quelle est la valeur de (int) 3.9 en Java ?
Casting to int truncates (drops decimals) → 3, not 4. · Convertir en int tronque (supprime les décimales) → 3, pas 4.
Converting int to double (a safe, automatic conversion) is called... · Converter un int en double (une conversion sûre et automatique) s'appelle...
Small → large is widening, done automatically. · Petit → grand est un élargissement, fait automatiquement.
Which needs an explicit cast to compile? · Quel cas nécessite une conversion explicite pour compiler ?
double → int is narrowing and requires the explicit cast. · double → int est un rétrécissement et nécessite la conversion explicite.
What is the value of (double) 7 / 2? · Quelle est la valeur de (double) 7 / 2 ?
Casting one operand forces floating-point division → 3.5. · Convertir un opérande force la division flottante → 3.5.
An int result beyond its range causes overflow, which Java reports as an error. · Un résultat int au-delà de sa plage provoque un débordement, ce que Java signale comme une erreur.
Overflow wraps silently — no error is raised. · Le débordement effectue un wrap silencieux — aucune erreur n'est levée.