代码之家  ›  专栏  ›  技术社区  ›  Sajal Dutta

AlmosteQual2Scomplete或BigDecimal缩放

  •  0
  • Sajal Dutta  · 技术社区  · 16 年前

    比较两个浮点值的更好方法是什么?使用Epsilon还是带缩放的大十进制比较?

    2 回复  |  直到 3 年前
        1
  •  1
  •   paxdiablo    16 年前

    这真的取决于你如何处理这些数字。如果你只是加减法,你必须处理一个 大的 对于您的数据范围,浮点错误累积到0.01的数字数。

    如果您不了解它是如何工作的(并且性能不是应用程序中的全部),请使用BigDecimal以确保安全。内置类型应该快得多。

        2
  •  1
  •   Crashworks    16 年前

    此外,在处理货币时,没有理由不能简单地存储表示美分而不是美元的整数,这样就可以有效地使用定点表示。 4090或其他常数分数精度。)您将能够在不损失精度的情况下进行无限次的加减运算。

    对于利息等计算,请使用浮点数执行计算,然后在存储之前简单地四舍五入到必要的精度。利息计算本身将具有必要的精度,并且您将在每个期间始终四舍五入到相同的小数位数,这通常是您在财务计算中想要的(我从未见过一家机构真的想在一个支付期到下一个支付期跟踪0.00001美元的情况——出于法律原因,他们会将账目精确到一定程度。)

    int 存储美分将使您最多代表21474836.47美元。你可以使用 储存$92233720368547758.07。要处理超过万亿的货币单位(以津巴布韦元表示美国预算?),请使用大十进制。

    您可以在此处了解有关浮点比较的更多信息: What Every Computer Scientist Should Know About Floating-Point Arithmetic