Casting and Range · Conversión y Rango
| English | Español |
|---|---|
| casting/ˈkæstɪŋ/ | conversión |
| truncates/ˈtrʌŋkeɪts/ | trunca |
| widening/ˈwaɪdənɪŋ/ | ampliación |
| narrowing/ˈnærəʊɪŋ/ | estrechamiento |
| range/reɪndʒ/ | range |
| overflow/ˌəʊvəˈfləʊ/ | desbordamiento |
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).
Cambiar el tipo de un valor
- Conversión (Casting) la conversión de tipos convierte un valor de un tipo a otro.
- Escribe el tipo de destino entre paréntesis:
(double) 5da5.0;(int) 3.9da3. - Al convertir a
int, se trunca — elimina la parte decimal, no redondea. (int) 3.9es3, y(int) -2.7es-2(hacia cero).
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.
La ampliación ocurre automáticamente
- Pasar de un tipo más pequeño a uno más grande (
int→double) es una ampliación. - La ampliación es segura, por lo que Java la realiza automáticamente:
double d = 5;almacena5.0. - No se pierde información al pasar de
intadouble. - Rara vez necesitas escribir una conversión de ampliación, pero está permitida.
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.
La reducción requiere una conversión explícita
- Pasar de un tipo más grande a uno más pequeño (
double→int) es una reducción — puede perder datos. - Java requiere una conversión explícita:
int n = (int) 3.9;(sin la conversión, no compilará). - La conversión es tu promesa de "sé que estoy eliminando los decimales".
- La reducción truncará hacia cero.
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.
Rango y desbordamiento
- Cada tipo tiene un rango fijo:
intalmacena aproximadamente ±2.1 mil millones. - Exceder el rango causa un desbordamiento — el valor se envuelve alrededor a un número incorrecto.
- No se lanza ningún error; el resultado simplemente es incorrecto en silencio.
- Para números enteros muy grandes, se necesita un tipo mayor (como
long).
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.
Al convertir a int, se trunca — NO redondea. (int) 3.9 es 3, no 4; (int) 2.99 es 2. Para forzar una división con punto flotante, convierte uno de los operandos: (double) 7 / 2 da 3.5, pero (int)(7.0 / 2) da 3. Y ten cuidado con el desbordamiento: un resultado de int fuera del rango de ±2.1 mil millones se envuelve en silencio, sin error.
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).
Promediar dos enteros correctamente:
int a = 7, b = 2;int avg = a / b;→3(la división entera elimina el resto — probablemente no sea lo que deseas).double avg = (double) a / b;→3.5(convertir un lado fuerza la división decimal).
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.
Conversión (type) value convierte entre tipos. int → double (ampliación) es automática y segura; double → int (reducción) necesita una conversión explícita y trunca hacia cero (sin redondear). Cada tipo tiene un rango fijo; excederlo causa un desbordamiento silencioso.
Casting between int and double · Conversión entre int y double
(int) truncates 3.9 to 3; casting one side gives 3.5. · (int) trunca 3.9 a 3; convertir un lado da 3.5.
What is the value of (int) 3.9 in Java? · ¿Cuál es el valor de (int) 3.9 en Java?
Casting to int truncates (drops decimals) → 3, not 4. · Convertir a int trunca (elimide decimales) → 3, no 4.
Converting int to double (a safe, automatic conversion) is called... · Convertir int a double (una conversión segura y automática) se llama...
Small → large is widening, done automatically. · Pequeño → grande es ampliación, se hace automáticamente.
Which needs an explicit cast to compile? · ¿Qué necesita una conversión explícita para compilar?
double → int is narrowing and requires the explicit cast. · double → int es estrechamiento y requiere la conversión explícita.
What is the value of (double) 7 / 2? · ¿Cuál es el valor de (double) 7 / 2?
Casting one operand forces floating-point division → 3.5. · Convertir un operando fuerza la división de punto flotante → 3.5.
An int result beyond its range causes overflow, which Java reports as an error. · Un resultado de int más allá de su rango causa desbordamiento, lo cual Java informa como error.
Overflow wraps silently — no error is raised. · El desbordamiento gira silenciosamente — no se genera ningún error.