java – 从String转换为BigDecimal以对货币进行数学运算

我正在开发一个项目,需要对货币执行一些简单的数学运算,但它以String的形式到达.我是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.

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

上一篇:java – 使用模式格式化货币时是否使用正确的数字分隔符?


下一篇:mysql – 将Money持久存入数据库.设计决定