Como podria redondear un decimal a 2 digitos precisos o a cualquier cantidad?
Por ejemplo:
2. 4571------------redondeado ---------- 2. 46
Como podria redondear un decimal a 2 digitos precisos o a cualquier cantidad?
Por ejemplo:
2. 4571------------redondeado ---------- 2. 46
Hola:
Normalmente, el redondeo se hace sólo para presentación en pantalla. Si es así, puedes usar la clase DecimalFormat .
Si quieres realmente eliminar los decimales de la variable de forma que sólo queden dos decimales, debes multiplicar por 100, convertir a entero eliminando el resto de decimales y luego volver a dividir por 100.
Int numero = (int)(valor * 100);
valor = numero/100. 0;
Es importante poner el punto cero al dividir entre 100. 0 para que la división no se considere entera y de decimales.
Se bueno.
Este programa tiene las funciones para dado un número, lo redondee por los decimales que quieras...
Suerte..... Si tienes mas dudas, visita el siguiente blog: https://javaoficial.blogspot.com
Public class consola {
public static void main (String[] args) {
double x = 1. 23456789;
float y = 9. 87654f;
double z;
float w;
z = round(x,2);
System.out.println(z);
z = round(x,5);
System.out.println(z);
System.out.println();
w = round(y,3);
System.out.println(w);
w = round(y,0);
System.out.println(w);
}
/**
* Round a double value to a specified number of decimal
* places.
*
* @param val the value to be rounded.
* @param places the number of decimal places to round to.
* @return val rounded to places decimal places.
*/
public static double round(double val, int places) {
long factor = (long)Math. Pow(10,places);
// Shift the decimal the correct number of places
// to the right.
val = val * factor;
// Round to the nearest integer.
long tmp = Math. Round(val);
// Shift the decimal the correct number of places
// back to the left.
return (double)tmp / factor;
}
/**
* Round a float value to a specified number of decimal
* places.
*
* @param val the value to be rounded.
* @param places the number of decimal places to round to.
* @return val rounded to places decimal places.
*/
public static float round(float val, int places) {
return (float)round(double)val, places);
}
}
[quote]Hola:
Normalmente, el redondeo se hace sólo para presentación en pantalla. Si es así, puedes usar la clase DecimalFormat .
Si quieres realmente eliminar los decimales de la variable de forma que sólo queden dos decimales, debes multiplicar por 100, convertir a entero eliminando el resto de decimales y luego volver a dividir por 100.
int numero = (int)(valor * 100);
valor = numero/100. 0;
Es importante poner el punto cero al dividir entre 100. 0 para que la división no se considere entera y de decimales.
Se bueno. [/quote]
Muchas gracias carnal, no sabía que teníamos que poner el 100 como float también para que no lo tomara como un entero. Me hiciste un gran paro
[quote]Hola:
Normalmente, el redondeo se hace sólo para presentación en pantalla. Si es así, puedes usar la clase DecimalFormat .
Si quieres realmente eliminar los decimales de la variable de forma que sólo queden dos decimales, debes multiplicar por 100, convertir a entero eliminando el resto de decimales y luego volver a dividir por 100.
int numero = (int)(valor * 100);
valor = numero/100. 0;
Es importante poner el punto cero al dividir entre 100. 0 para que la división no se considere entera y de decimales.
Se bueno. [/quote]
Muchas gracias carnal, no sabía que teníamos que poner el 100 como float también para que no lo tomara como un entero. Me hiciste un gran paro
La clase que va muy bien en estos casos es la BigDecimal.
// get importeBrutoMensual and round to 2 decimal places
BigDecimal importeBrutoMensual = new BigDecimal(diasMes). Multiply(importeDiaGlobal);
importeBrutoMensual = importeBrutoMensual. SetScale(2,RoundingMode. HALF_EVEN);
Tiene este metodo. SetScale() al cual les pasas este enumerador (java.Math.RoudingMode) que te permite hacer redondeos de distintos tipos. El dos es el nº de digitos que quieres mostrar.
Pero el DecimalFormat tb. Va bien creo.
Saludos.
Quiero redondear un decimal a 2 digitos precisos o a cualquier cantidad?
Por ejemplo:
10. 3448------------redondeado ---------- 10. 34
Si queda asi o seria 10. 35
cuano es menor de 5 se deja asi o sube o se baja
Pendejos pongan una clase para poder descargar! Idiotas
Sonsos
Hermano,
La clase DecilmalFormat te devuelve un String como tu quieras con los decimales que necesites. Solo debes enviarle un Patron como parametro.
Y con la clase Math puedes redondearlo, esta última si te devolverá un número.
Hola, ampliando la respuesta de Chuidiang , a ver que os parece este metodo que permite indica a que nº de decimales queremos redondear:
public double redondear( double numero, int decimales ) {
int numeroEntero = 0;
double numeroDivision = 1. 0;
for(int i=1;i<=decimales;i++){
numeroDivision = numeroDivision * 10. 0;
}
numeroEntero = (int)(numero * numeroDivision);
double valor = numeroEntero / numeroDivision;
return valor;
}
Saludos
Laia
PAra nomas de esito mas el problema hermanos si solo es este codiguito....
Double x = 18. 2079999;
DecimalFormat formateador = new DecimalFormat("###0. ##");
x = formateador. Parse(formateador. Format(x)). DoubleValue();
System.out.println(x);
Arreglemos x fa demos respuestas claras.....
dada una matriz con numeros de tipo float, devolver la misma matriz con sus datos redondeados a 3 cifras decimales.
dada una matriz con numeros de tipo float, devolver la misma matriz con sus datos redondeados a 3 cifras decimales.
Hola
Quisiera saber el metodo para redondear un numero x de tipo double pero con los parametros que yo quiera
Ejemplo
Si x=3. 3 que se redondee al numero proximo de arriba, osea 4 y si es x=3. 2 que se redondee al de abajo, osea 3
Ayuda porfavor