将字符串转换为BigDecimal以进行货币计算

4

我正在一个需要对货币执行简单数学运算的项目中工作,但是它以字符串形式到达。由于我是Java/Android的新手,因此我寻求帮助将其从字符串转换为适用于此操作的数据类型。一开始,我认为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());
1个回答

5
BigDecimal是一种很好的方法。使用intlong存储分也是可以的。我听说有些人喜欢Joda-Money,但我自己从未使用过。
请参见此问题
在您发布的代码中,请确保您收到的String没有货币符号。

非常感谢您的帮助和链接!那是一次全面的讨论。通常情况下,我不知道如何最好地提出问题以找到正确的答案... :) - ctgScott
唉...我还太新了,无法“向上箭头”您的答案。您值得拥有它,我希望更有经验的人能来帮我点赞。再次感谢。 - ctgScott

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接