我正在从事一个项目,该项目需要对货币执行一些简单的数学运算,但它以字符串的形式出现。我是 Java/Android 的新手,所以我正在寻求帮助将 String 转换为适合此操作的数据类型。起初我认为 Float 是正确的,但在阅读其他地方并将自己介绍给数字类后,BigDecimal 似乎是正确的。我在正确的轨道上吗?此时我只想从初始发票金额中减去付款总额。我觉得这段代码很简单但很笨拙,我怀疑我错过了很多关于使用货币的细微差别。你会怎么做?热烈感谢所有建议!
// 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
是一种很好的方法。使用 int
或 long
来存储美分也是如此。我听说有些人喜欢 Joda-Money但我自己从未使用过它。
参见 this question .
在您发布的代码中,确保您收到的 String
中没有货币符号。
关于java - 从 String 转换为 BigDecimal 以对货币进行数学计算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4973079/