如果浮动和双重不准确,银行如何进行涉及金钱的准确计算?

时间:2012-06-18 16:07:56

标签: c++ currency bank

目前正在学习C ++,这件事刚刚发生在我身上。我只是对此感到好奇,因为我正在制定一个简单的银行计划。我将使用double计算美元/利率等,但计算机计算和人工计算之间存在一些细微差别。

我想现实世界中那些额外的.pennies可以发挥重要作用!

4 个答案:

答案 0 :(得分:12)

在许多情况下,财务计算是使用定点算术而不是浮点算进行的。

例如,.NET Decimal类型或VB6 Currency类型。这些基本上只是整数类型,每个人都同意这些单位只有一小部分,比如$ .0001。

是的,必须进行一些舍入,但这是非常系统的。通常,舍入规则在合约的细则中很深(利率为x%,每个T复合,四舍五入到最接近的便士,但每个报表期间不低于$ y)。

答案 1 :(得分:1)

8字节长的范围是:-9223372036854775808 max:9223372036854775807做所有事情,只需几千美分/分钱,你仍然可以处理数万亿美元/磅/无论如何。

答案 2 :(得分:1)

这取决于应用程序。所有带小数的计算都将 当你输出美元和美分(或其他任何东西)时需要舍入 当地货币是):文章的基本价格可能只有两个 小数点后的数字,但是当您添加销售税或增值税时,那里 会更多,如果你需要计算投资的利息, 会有更多。

通常,使用double可获得最准确的结果, 但是...如果您的软件用于某种簿记 法律要求(例如为了税收目的),您可能需要遵守 标准接受的舍入实践,这些是基于小数 算术,而不是二进制,十六进制或八进制(这是通常的基础 对于浮点数二进制文件在所有方面都是通用的 大型机)。在这种情况下,您需要使用某种Decimal class,确保正确的舍入。用于其他用途(例如风险 分析),double没问题。

答案 3 :(得分:0)

仅仅因为数字不是整数并不意味着它不能精确计算。如果计算一个便士(美分)的数量,则认为美元和美分值是一个整数,因此对于使用两位小数精度简单地将每个数乘以100的定点库来说,这是一件简单的事情,执行计算为整数,然后再除以100.