Tengo dos enteros x
y y
. Necesito calcular x/y
y, como resultado, me gustaría flotar. 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. Desafortunadamente, no puedo encontrar una manera fácil de hacerlo. ¿Podrías ayudarme con eso?
java
integer
floating-point
romano
fuente
fuente
BigDecimal
no es un reemplazo universalmente correcto defloat
.Respuestas:
Solo necesita lanzar al menos uno de los operandos a un flotante:
float z = (float) x / y;
o
float z = x / (float) y;
o (innecesario)
float z = (float) x / (float) y;
fuente
No debe usar flotar 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);
huellas dactilares
f= 111111.12 d= 111111.1111
Siguiendo el comentario de @ Matt.
float 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 a un error de redondeo es mucho mayor. Por esta razón, muchos desarrolladores recomiendan no usar punto flotante en absoluto y recomiendan encarecidamente BigDecimal.
Sin embargo, encuentro que el doble se puede usar en la mayoría de los casos siempre que se use un redondeo sensato .
En este caso, int x tiene una precisión de 32 bits mientras que float tiene una precisión de 24 bits, incluso dividir por 1 podría tener un error de redondeo. double por otro lado tiene 53 bits de precisión, que es más que suficiente para obtener un resultado razonablemente preciso.
fuente
double
es mejor quefloat
.Solo necesita transferir el primer valor a flotar, antes de que se involucre en más cálculos:
float z = x * 1.0 / y;
fuente
// El entero que quiero convertir
int myInt = 100;
// Casting de entero para flotar
float newFloat = (float) myInt
fuente
Aquí sabrás como podrás 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); }
Nos vemos !
fuente
Float
) es totalmente innecesario para esto.Sameer:
float l = new Float(x/y)
no funcionará, ya que calculará la división entera de xey primero, luego construirá un flotante a partir de ella.
float result = (float) x / (float) y;
Es semánticamente el mejor candidato.
fuente