Tengo dos enteros x
y y
. Necesito calcular x/y
y como resultado me gustaría obtener flotación. Por ejemplo, como resultado de 3/2
me gustaría tener 1.5. Pensé que la forma más fácil (o la única) de hacerlo es convertir x
y y
en tipo flotante. Lamentablemente, no puedo encontrar una manera fácil de hacerlo. ¿Podrías por favor ayudarme con eso?¿Cómo puedo convertir un número entero en float en Java?
Respuesta
Sólo tiene que fundido al menos uno de los operandos a un flotador:
float z = (float) x/y;
o
float z = x/(float) y;
o (innecesaria)
float z = (float) x/(float) y;
¿Es esto más eficiente que: float z = (1.0 * x)/y; ? ¿La conversión flotante es internamente más eficiente que la multiplicación? Tnx! – MSquare
No lo sé, pero creo que es irrelevante el 99% o más del tiempo. Ni siquiera remotamente va a ser un cuello de botella. Si realmente estás preocupado, [compáralo tú mismo.] (Http://stackoverflow.com/q/504103/139010) –
El primero y el segundo causarán errores en ciertos dispositivos de brazo, asegúrate de convertir ambos enteros. –
Aquí es cómo usted puede hacerlo:
public static void main(String[] args) {
// TODO Auto-generated method stub
int x = 3;
int y = 2;
Float fX = new Float(x);
float res = fX.floatValue()/y;
System.out.println("res = "+res);
}
¡Te veo!
El uso de un tipo de envoltura ('Float') es totalmente innecesario para esto. –
Tiene toda la razón, su respuesta es mucho mejor :) – LaGrandMere
Por favor [no use firmas o eslóganes] (http://stackoverflow.com/faq#signatures) en sus publicaciones. – meagar
No debe usar flotador a menos que sea necesario. En el 99% de los casos, el doble es una mejor opción.
int x = 1111111111;
int y = 10000;
float f = (float) x/y;
double d = (double) x/y;
System.out.println("f= "+f);
System.out.println("d= "+d);
impresiones
f= 111111.12
d= 111111.1111
Siguiendo @ comentarios de Matt.
flotador tiene muy poca precisión (6-7 dígitos) y muestra un error de redondeo significativo con bastante facilidad. double tiene otros 9 dígitos de precisión. El costo de usar double en lugar de float es teórico en el 99% de los casos, sin embargo, el costo de un error sutil debido al error de redondeo es mucho mayor. Por esta razón, muchos desarrolladores recomiendan no usar ningún punto flotante y recomiendan BigDecimal.
Sin embargo me parece que el doble se puede utilizar en la mayoría de los casos proporcionado redondeo sensible se utiliza.
En este caso, int x tiene una precisión de 32 bits mientras que el flotador tiene una precisión de 24 bits, incluso dividir por 1 podría tener un error de redondeo. Double, por otro lado, tiene una precisión de 53 bits, que es más que suficiente para obtener un resultado razonablemente preciso.
Debería dar más detalles sobre _por qué_ 'double' es mejor que' float'. –
Sameer:
float l = new Float(x/y)
no funcionará, ya que calcular la división entera de X e Y primero, a continuación, construir un flotador de ella.
float result = (float) x/(float) y;
Es semánticamente el mejor candidato.
Tu respuesta debería haber sido un comentario. Sameer no recibirá ninguna notificación de tu publicación. Semánticamente, la conversión de ambos puntos para flotar antes de calcular el resultado es innecesaria; por lo tanto, no es mejor que transformar uno solo. Da una impresión equivocada, y por lo tanto es inferior, yo. –
sólo tiene que transferir el primer valor de flotar, antes de que se involucra en otros cálculos:
float z = x * 1.0/y;
// El número entero Quiero convertir
int myInt = 100;
// Fundición de número entero flotar
float newFloat = (float) myInt
- 1. convertir float a entero en prolog
- 2. ¿Cómo puedo convertir un número entero en su representación verbal?
- 3. convertir un número entero en una matriz
- 4. Cómo convertir un número entero de rubí en un símbolo
- 5. Cómo convertir un número entero en un vector binario?
- 6. cómo puedo convertir un nsnumber en un float
- 7. Cómo convertir un número entero para flotar en Delphi?
- 8. Convertir float en bits
- 9. Ruby round float to_int si el número entero es
- 10. Convertir cadena binaria en número entero
- 11. ¿Cómo puedo explotar un número entero
- 12. conversión doble de número entero en java
- 13. convertir número Peano s (n) de número entero en Prolog
- 14. ¿Cómo puedo convertir un carácter a un número entero en Python, y viceversa?
- 15. Cómo convertir cadenas en float en JavaScript?
- 16. ¿Cómo puedo convertir Float y [Word8]?
- 17. convertir un número entero en una cadena como 3
- 18. Cómo convertir Float (clase Wrapper) en clase contenedora Integer?
- 19. Convertir factor en entero
- 20. Java: Convertir bytes a entero
- 21. Convertir exponencial de un número entero en PHP
- 22. Convertir un número entero en una cadena sin asignar memoria
- 23. ¿Cómo puedo convertir una matriz de 4 bytes en un número entero?
- 24. Cómo convertir de float a bigDecimal en java?
- 25. ¿Puedo comparar y agregar un número de coma flotante a un número entero en C?
- 26. ¿Cómo puedo convertir una cadena en entero con ceceo común?
- 27. cómo convertir número entero de cadena en C objetiva
- 28. Cómo convertir float a int en smarty
- 29. ¿Cómo puedo convertir una cadena en un número en Perl?
- 30. ¿Cómo puedo convertir un número en texto en Perl?
flotar resultado = ((float) x)/y? – mibollma
mira esto: http://xahlee.org/java-a-day/casting.html – fasseg
posible duplicado de [Java: dividir 2 ints hace un int?] (Http://stackoverflow.com/questions/787700/ java-dividing-2-ints-makes-an-int) – dogbane