目前正在学习C ++,这件事刚刚发生在我身上。我只是对此感到好奇,因为我正在制定一个简单的银行计划。我将使用double
计算美元/利率等,但计算机计算和人工计算之间存在一些细微差别。
我想现实世界中那些额外的.pennies可以发挥重要作用!
答案 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.