Convertir de String a BigDecimal para hacer matemáticas en moneda

Estoy trabajando en un proyecto que requiere algunas matemáticas simples para ser realizado en la moneda, sin embargo, llega en forma de una cadena. Soy nuevo en Java / Android por lo que estoy buscando ayuda en la conversión de una cadena a un tipo de datos apropiado para esta operación. Al principio pensé que Float tenía razón, pero después de leer en otro lugar y de presentarme a la clase de números, parece que BigDecimal es correcto. ¿Estoy en el buen camino? En este punto simplemente quiero restar la suma de los pagos de una cantidad de la factura inicial. Tengo la sensación de que este código es simple pero torpe y sospecho que estoy perdiendo mucho sobre los matices de trabajar con la moneda. ¿Como lo harias? Todos los consejos muy apreciado!

// capture variables from sending activity String invoiceAmt = getIntent().getStringExtra("invoiceAmt"); String paymentsSum = getIntent().getStringExtra("paymentsSum"); // convert strings to BigD's BigDecimal amt = new BigDecimal(invoiceAmt); BigDecimal sum = new BigDecimal(paymentsSum); // Do the math BigDecimal invDue = amt.subtract(sum); // insert the value (back to string) into textView TextView tvInvoiceDue = (TextView)findViewById(R.id.InvoiceDue); tvInvoiceDue.setText(invDue.toString()); 

BigDecimal es un enfoque fino. Por lo tanto, es usar un int o un long para almacenar centavos. He oído a algunas personas como Joda-Money, pero nunca lo he usado yo mismo.

Vea esta pregunta .

En el código que publicó, asegúrese de que la String que está recibiendo no tiene símbolos de moneda en ellos.

  • Patrón de Android AsyncTask / doInBackground
  • ¿Cómo puedo convertir la cadena de const valor de clase int?
  • Problema pasando byte a través de jni a C en Android
  • Establecer lockscreen a "None" por programa?
  • ¿Cómo puedo resolver el brut.androlib.AndrolibException
  • Extendiéndose de dos clases
  • Cómo analizar datos de 2 URL diferentes mediante el método asyncTask
  • Obtener indicaciones para llegar con la API de Google Maps v2
  • InflateException: Línea de archivo XML binario # 22: Error al inflar la clase <unknown>
  • Java enum ¿Puedo agregar un método de devolución?
  • Android - ¿Cómo almacenar certificado en keystore mediante programación?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.