【问题标题】:Converting from String to BigDecimal to do math on currency从 String 转换为 BigDecimal 以对货币进行数学运算
【发布时间】:2011-02-11 19:16:31
【问题描述】:

我正在做一个项目,该项目需要对货币执行一些简单的数学运算,但它以字符串的形式出现。我是 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());

【问题讨论】:

    标签: java android string currency bigdecimal


    【解决方案1】:

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

    this question

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

    【讨论】:

    • 非常感谢您的帮助和链接!这是一个彻底的讨论。通常情况下,我不知道如何最好地提出问题才能找到正确的答案...... :)
    • 呃......我还是太新了,无法“向上箭头”你的答案。你应得的,我希望有更高级的人来为我做这件事。再次感谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-18
    • 1970-01-01
    • 2022-12-03
    • 1970-01-01
    相关资源
    最近更新 更多