conversión de tipo java-numérico

Conversión legal entre tipos numéricos

 

Conversión legal entre tipos numéricos

1. Las flechas sólidas en la figura indican conversiones sin pérdida de información y las flechas discontinuas indican conversiones con posible pérdida de precisión.
P.ej

int a = 123456789;  
flotar b = a; // b = 1.23456792E8

2. Cuando utilice los dos cálculos anteriores, debe convertir el tipo numérico al mismo para calcular:

  • Si uno de los dos operandos es doble, el otro se convertirá en doble
  • De lo contrario, si uno de los dos operandos es flotante, el otro se convertirá en flotante
  • De lo contrario, si uno de los dos operandos es largo, el otro se convertirá en largo.
  • De lo contrario, ambos operandos se convertirán al tipo int

Conversión de tipo forzada

La conversión de tipo forzada, como double a int, puede perder información.
La sintaxis de la conversión de tipo forzada es proporcionar el tipo de destino que desea convertir entre paréntesis, seguido del nombre de la variable a convertir. P.ej:

double c = 9.993;
int d = (int)c;//9
d为9,强制类型转换通过截取小数点部分将浮点型【包括单精度和双精度】转换成整型。
  •  

Si desea redondear el tipo de punto flotante para obtener el tipo de entero más cercano, en este caso, debe usar el método Math.round:

double c = 9.993;
int d = (int)Math.round(c);//10
  •  

Ahora el valor de d es 10. Cuando se usa round, todavía se necesita una conversión de tipo forzada. Debido a que el tipo devuelto por el método round es de tipo largo, debido a la posibilidad de pérdida de información, el tipo largo solo se puede convertir por conversión forzada de tipo explícito. Convertido a tipo int.

Advertencia: Si intenta forzar un valor de un tipo a otro y excede el rango del tipo de destino, el resultado se truncará a un valor completamente diferente. Por ejemplo, el valor real de (byte) 300 es 44

 

Supongo que te gusta

Origin blog.csdn.net/CUITAO2305532402/article/details/111184245
Recomendado
Clasificación