2011-02-11 70 views
4

我正在处理一个需要对货币执行一些简单的数学运算的项目,但它以字符串的形式到达。我是Java/Android的新手,所以我正在寻找从String转换为适合此操作的数据类型的帮助。起初我以为Float是对的,但在读过其他地方并向自己介绍数字类的时候,似乎BigDecimal是正确的。我在正确的轨道上吗?在这一点上,我只是想从初始发票金额中减去付款总额。我感觉这段代码简单但笨拙,我怀疑我错过了关于使用货币工作的细微差别。你会怎么做?所有建议热烈赞赏!从字符串转换为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()); 

回答

5

BigDecimal是一个很好的方法。因此,使用intlong来存储美分。我听说有人喜欢Joda-Money,但我从来没有用过它。

参见this question

在您发布的代码中,请确保您收到的String没有货币符号。

+0

非常感谢您的帮助和链接!这是一个彻底的讨论。往往是这样,我不知道如何最好地问这个问题,以找到正确的答案...... :) – ctgScott 2011-02-11 19:48:18