entero - convertir string a double java
convirtiendo doble a entero en Java (4)
¿Existe la posibilidad de que el lanzamiento de un doble creado a través de
Math.round()
todavía resulte en un número truncado hacia abajo?
No, round()
siempre redondeará su doble al valor correcto, y luego, se lanzará a una long
que truncará los decimales. Pero después del redondeo, no quedará ninguna parte fraccionaria.
Aquí están los documentos de Math.round(double)
:
Devuelve el más cercano al argumento. El resultado se redondea a un entero agregando 1/2, tomando la palabra del resultado y lanzando el resultado para escribir largo. En otras palabras, el resultado es igual al valor de la expresión:
(long)Math.floor(a + 0.5d)
En Java, quiero convertir un doble en un entero, sé si haces esto:
double x = 1.5;
int y = (int)x;
obtienes y = 1. Si haces esto:
int y = (int)Math.round(x);
Es probable que obtenga 2. Sin embargo, me pregunto: dado que las representaciones dobles de números enteros a veces se parecen a 1.9999999998 o algo así, ¿existe la posibilidad de que emitir un doble creado a través de Math.round () aún resulte en un número truncado, en lugar de que el número redondeado que estamos buscando (es decir: 1 en lugar de 2 en el código como se representa)?
(y sí, lo digo como tal: ¿hay algún valor para x, donde y mostrará un resultado que es una representación truncada en lugar de una representación redondeada de x?)
Si es así: ¿hay una forma mejor de convertir un doble en un int redondeado sin correr el riesgo de truncamiento?
Imaginé algo: Math.round (x) devuelve un largo, no un doble. Por lo tanto: es imposible para Math.round () devolver un número que se parezca a 3.9999998. Por lo tanto, int (Math.round ()) nunca necesitará truncar nada y siempre funcionará.
Para el tipo de datos Double
to int
, puede usar lo siguiente:
Double double = 5.00;
int integer = double.intValue();
Double perValue = 96.57;
int roundVal= (int) Math.round(perValue);
Resolvió mi propósito.
double a = 1.450;
String sa = String.valueOf(a);
int lengthUntilPoint = sa.indexOf(".")+1;
int power = sa.length() - lengthUntilPoint;
int ia = (int) (a* Math.pow(10, power));