【问题标题】:float or double when dealing with an account transaction and money处理账户交易和资金时浮动或加倍
【发布时间】:2013-09-22 03:14:42
【问题描述】:

我一直想知道在我的简单代码问题中如何使用浮点数和双精度数。用户可以输入存款金额并打印当前余额。金额不会太大(我认为双倍非常适合)但更重要的是我希望它显示为两位小数。 我目前正在使用浮点数,但只显示小数点后一位,我也无法添加小数点后两位的金额。无论如何限制添加的数量并将其限制为只有 2 个小数位?也许我可以添加一个简单的条件。

【问题讨论】:

  • 除了您必须使用DecimalBigDecimal:不要将其限制为逗号后的两个数字。尽可能准确地保存您的价值;您正在谈论演示,您不必为此放弃准确性。

标签: java


【解决方案1】:

您不应使用floatdouble 进行财务计算;舍入误差会在意想不到的地方累积。如果您不需要超过 0.01 美元的分辨率,请使用 intlong 并以美分进行所有计算。仅在输入和输出时在美分和美元(或您使用的任何货币)之间进行转换。

如果您需要超过 0.01 美元的分辨率(例如,用于中间计算),那么您应该使用 BigDecimal 数字。它专为需要非常高精度的金融计算等应用而设计。

【讨论】:

    猜你喜欢
    • 2017-07-15
    • 2020-02-26
    • 2016-03-24
    • 1970-01-01
    • 2012-03-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-11
    相关资源
    最近更新 更多