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());
- Botón androide con doble borde y degradado
- Problema con el archivo de envío de Bluetooth de Android
- Anotación @Override en Android
- ActivityUnitTestCase getActionBar () devuelve null
- Smack lanza "NoClassDefFoundError: Resolución fallida de: Lorg / jxmpp / util / XmppStringUtils"
- Prueba de unidad de presentador con RxJava CompositeSubscription
- Convertir una cadena de fecha en milisegundos en java
- Android compila, sobre demasiados métodos
- ¿Por qué utilizar XML para crear GUI es una buena práctica en Android
- Deslizar la carga en SimpleTarget <Bitmap> no respetando el ancho y la altura especificados
- Ejecutar AspectJ causa NoSuchMethodError: Aspect.aspectOf
- Incorporar detalles de la versión en android APK
- Android onConfigurationChanged no se llama
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.