在C ++中,什么用于定点表示?

时间:2020-03-06 14:50:52  来源:igfitidea点击:

我正在寻找用于财务数据的定点标准,我们知道有什么值得尝试的吗?我们对手工定点类的演奏有任何经验吗?

解决方案

Dr.Dobb's有一篇文章介绍了C ++中定点算术类型的可能实现。看一下这个。

IBM的decNumber ++

哎哟。财务系统很棘手,主要问题不是定点数学,而是舍入误差。

我们可以拥有一个完整的电子表格,其中包含按客户类型和VAT进行的折扣计算在内的计算结果。我们进行总计,然后将其提交给会计师,他说这些值都是错误的。原因:输出的格式可能只有2个小数位,但内部该值具有浮点数或者双精度数的所有小数位。他们的确加起来。

我们需要了解自己的财务状况,并确定基本价值在哪里。意思是会计师要检查的价值是什么(是的,这需要业务知识,并在"棘手的"部分进行了修饰)。

在将值保存为持久格式(数据库,文件,内存...)之前,我们将截断可能已添加了乘法和除法的多余小数位。

N个小数位的快速且肮脏的解决方案:
((双精度)((整数)(值* N * 10.0)))/ 10.0

当然,我们需要准确检查财务状况需要哪种取整方法。

我使用定点数学课程。它被设计为或者多或者少地减少了浮点数/双打数。 http://codef00.com/coding

编辑:作为旁注,我不会为此目的亲自使用定点类。相反,我将只存储美分的数量(根据需要存储十分之一美分或者百分之一美分)。只需直接进行数学运算即可。然后,当显示给用户时,我将适当地缩放该值。