我编写金融应用程序,经常纠结使用double还是decimal。
我的所有数学计算都在不超过5位小数且不大于100,000的数字上进行,我有一种感觉这些数字无论如何都可以用双精度表示而不会出现舍入误差,但从来没有确定过。
我会转换为双精度以获得明显的加速优势,但最终,我仍然使用ToString方法将价格传输到交易所,并需要确保它始终输出我期望的数字 (例如89.99,而不是89.99000000001)。
问题:
- 速度优势是否真的像简单测试所示的那么大? (~100倍)
- 有没有一种方法可以保证ToString的输出结果是我想要的?我的数字总是可表示的,这是否可以保证?
更新:在我的应用程序运行之前,我必须处理约100亿个价值更新,并且现在已经实现了使用小数点以保护数据的明显原因,但开机时间需要大约3个小时,使用双精度将极大地缩短开机时间,有没有安全的方法可以使用双精度?