Преобразование из String в BigDecimal для математического анализа валюты - PullRequest
4 голосов
/ 11 февраля 2011

Я работаю над проектом, требующим выполнения простых математических операций с валютой, однако он приходит в форме строки. Я новичок в 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 голосов
/ 11 февраля 2011

BigDecimal - это прекрасный подход.Так же используется int или long для хранения центов.Я слышал таких людей, как Joda-Money , но сам никогда не использовал их.

См. этот вопрос .

В кодеотправив сообщение, убедитесь, что в получаемых вами String символах валюты нет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...