我想知道人们是否在财务应用中使用十进制而不是双精度浮点数。我看到很多人在各个地方使用双精度浮点数,但结果并不如意...
您是否看到其他人犯这个错误...
我想知道人们是否在财务应用中使用十进制而不是双精度浮点数。我看到很多人在各个地方使用双精度浮点数,但结果并不如意...
您是否看到其他人犯这个错误...
这是一个方便、高性能的CLR货币结构,它处理算术运算、货币类型、格式化和仔细的分配和舍入而不会丢失精度。
我完全同意上面提到的浮点数与十进制数正确性问题,但是许多金融应用程序对性能要求很高。
在这种情况下,您将考虑在不支持硬件十进制类型的系统中使用float/double,因为decimal对性能有很大影响。而且,仍然可以将浮点类型包装在更高级别的类(例如Tax、Commission、Balance、Dividend、Quote、Tick等)中,表示领域模型并封装所有舍入逻辑以及这些类型及其交互的有效运算符。 是的,在一些项目中,我已经实现了自定义舍入函数,相比于.NET或win32方法,可以挤出多达20%的计算量。
另一个需要考虑的事情是是否将对象传递到进程外,因为序列化通常是4个整数的十进制数,并将它们通过网络传输会占用更多的CPU资源(特别是如果不支持),并导致更大的带宽和内存占用。
我一直使用十进制。至少在我使用支持它的语言时是这样。否则,舍入误差会让你付出代价。