Android: ¿Cómo obtener sólo dos dígitos después del punto en el valor decimal? no quiere trunc el valor

Cómo obtener el valor doble que es sólo dos dígitos después del punto decimal.

Por ejemplo, si el a = 190253.80846153846 entonces el valor del resultado debe ser como a = 190253.80

Prueba: Tengo intentar con esto:

public static DecimalFormat twoDForm = new DecimalFormat("#0.00"); 

en codigo

 a = Double.parseDouble(twoDForm.format(((a)))); 

Pero tengo el valor como 190253.81 en lugar de que quiero 190253.80

Entonces, ¿qué debo tener que cambiar por ella?

7 Solutions collect form web for “Android: ¿Cómo obtener sólo dos dígitos después del punto en el valor decimal? no quiere trunc el valor”

Porque Math.round () Devuelve el int más cercano al argumento. El resultado se redondea a un entero añadiendo 1/2, tomando el piso del resultado, y arrojando el resultado al tipo int. Utilice Math.floor()

Ejemplo

  public static double roundMyData(double Rval, int numberOfDigitsAfterDecimal) { double p = (float)Math.pow(10,numberOfDigitsAfterDecimal); Rval = Rval * p; double tmp = Math.floor(Rval); System.out.println("~~~~~~tmp~~~~~"+tmp); return (double)tmp/p; } 

Código fuente completo

 class ZiggyTest2{ public static void main(String[] args) { double num = 190253.80846153846; double round = roundMyData(num,2); System.out.println("Rounded data: " + round); } public static double roundMyData(double Rval, int numberOfDigitsAfterDecimal) { double p = (float)Math.pow(10,numberOfDigitsAfterDecimal); Rval = Rval * p; double tmp = Math.floor(Rval); System.out.println("~~~~~~tmp~~~~~"+tmp); return (double)tmp/p; } } 

Prueba esto,

hacer un objeto de BigDecimal

 double a = 190253.80846153846; BigDecimal bd = new BigDecimal(a); BigDecimal res = bd.setScale(2, RoundingMode.DOWN); System.out.println("" + res.toPlainString()); 

Sin bibliotecas:

 a = (float) (((int)(a * 100)) / 100.0f); 

o, para el doble:

 a = (double) (((int)(a * 100)) / 100.0); 

Creo que va a redondear el valor, compruebe esto

 (float)Math.round(value * 100) / 100 

desde este enlace ronda de número decimal

o este ejemplo

 Following code works for me. public static double round(double value, int places) { //here 2 means 2 places after decimal long factor = (long) Math.pow(10, 2); value = value * factor; long tmp = Math.round(value); return (double) tmp / factor; } 
 double dValue = 10.12345; try{ String str = Double.toString(dValue*100);` str = str.split("[.]")[0]; dValue = Double.parseDouble(str)/100; } catch (Exception e) { e.printStackTrace(); } System.out.println(dValue); 

Utilice este código. Puede obtener la salida deseada que desee.

Aquí hay otra forma de escribir que es similar a la de Shabbir ^ pero creo que es más fácil de leer. En realidad quería redondearlo; si mostraba .349, quería ver .35 – pero si no quieres eso entonces puedes usar Math.floor en lugar de mi Math.round:

 public static double round(double time){ time = Math.round(100*time); return time /= 100; } 

Aquí está mi código completo: Estoy trabajando en un programa para encontrar 3 intervalos de tiempo aleatorios de 1 min en un segmento de tiempo dado, para un proyecto de investigación en el que estoy trabajando.

 import java.lang.*; import java.util.*; class time{ public static void main (String[] args){ int time = Integer.parseInt(args[0]); System.out.println("time is: "+time); //randomly select one eligible start time among many //the time must not start at the end, a full min is needed from times given time = time - 1; double start1 = Math.random()*time; System.out.println(start1); start1 = round(start1); System.out.println(start1); } public static double round(double time){ time = Math.round(100*time); return time /= 100; } } 

para ejecutarlo, con salida de corriente:

 [bharthur@unix2 edu]$ java time 12 time is: 12 10.757832858914 10.76 [bharthur@unix2 edu]$ java time 12 time is: 12 0.043720864837211715 0.04 
  • Tengo problemas para entender lo que realmente obtiene GetDisplayRect () de PhotoView (construyendo una herramienta de recorte de fotos de android)
  • Fórmulas matemáticas en textview en android
  • ¿Cuál es la mejor práctica para redondear un flotador a 2 decimales?
  • La mejor práctica para calcular la velocidad media de las coordenadas GPS
  • Implementar página curl en android?
  • Android Fourier Transform Realtime - Renderscript
  • ¿Multiplicar dobles en java?
  • Dibuja un camino curvo en la lona?
  • ¿Debo confiar en Android para descartar los sorteos fuera de pantalla?
  • Determinación de números pares / impares (enteros)?
  • Android Dividir el círculo en N partes iguales y conocer las coordenadas de cada punto de división
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.