我很好奇在计算财务数据时是否存在任何“舍入”标准。我最初的想法是仅在将数据呈现给用户(表示层)时才进行舍入。
如果“四舍五入”数据随后用于进一步计算,应该使用“四舍五入”数字还是“原始”数字?有人有建议吗?
请注意,我知道不同的舍入方法,即银行家舍入等。
我很好奇在计算财务数据时是否存在任何“舍入”标准。我最初的想法是仅在将数据呈现给用户(表示层)时才进行舍入。
如果“四舍五入”数据随后用于进一步计算,应该使用“四舍五入”数字还是“原始”数字?有人有建议吗?
请注意,我知道不同的舍入方法,即银行家舍入等。
我刚问了我工作的金融软件公司的一个灰胡子大型机程序员,他说没有众所周知的标准,这取决于程序员的实践。
虽然统计学家至少从 1906 年就已经意识到四舍五入的问题,但很难找到一个支持它的财务标准。
根据这个网站,“欧洲委员会报告《欧元的引入和货币金额的四舍五入》 表明,以前没有标准的方法来四舍五入银行业。”
通常,无论您使用什么基数(base-2 或 base-10),都使用对称舍入模式。
这将避免计算过程中的系统偏差。
这种模式是 Round-Half-To-Even,也称为“银行家四舍五入”。
使用允许您明确指定数字上下文的语言工具,包括舍入和截断模式。例如,Python 的decimal
模块。C 库所做的隐含假设可能不适合您的计算。
令人沮丧的是,在这方面没有明确的标准,既可以指导程序员,也可以作为法庭上的辩护。仅仅对工资单进行“定期”四舍五入可能会导致工资单上少付几美分,这是劳工律师吃的东西。
虽然基本工资率很可能只指定小数点后两位(“您以 22.71 美元/小时的价格被雇用”),但诸如混合加班(通过在一段时间内平均多个工资率确定)之类的事情最终的有效小时费率为23.37183475 美元/小时。
你如何支付加班费?
15 hours x 23.37183475 x 1.5 = $525.87 rounded from $525.86628187
15 hours x 23.37 x 1.5 = $525.82
你为什么从我的客户那里偷五分钱?可悲的是,我不是在开玩笑。
当您以完整精度值计算但显示截断版本时,这会变得更加不舒服:您执行上面的第一个计算,但在工资单上只显示 23.37 美元的费率。
现在工资单计算不和一分钱挂钩,现在你必须解释它,但即使这对员工有利,劳工律师也可以闻到水中的血腥味并开始寻找其他人东西。
一种方法是始终支持员工,而不是顺其自然,因此永远不会有系统性工资盗窃的指控。
我还没有看到“一个标准来统治所有这些”的存在 - 有任何数量的舍入规则(正如您所引用的),它们似乎根据行业/客户/和货币代码发挥作用(http:/ /en.wikipedia.org/wiki/ISO_4217 ) - 因为不是每个人都使用小数点后 2 位,所以问题变得更加复杂。归根结底,您的客户需要指定他们想要实施的规则......
考虑使用缩放整数。
换句话说,存储整数的便士而不是小数的美元。