2011-02-11 72 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