为什么大多数.NET库使用Double而不是Decimal?我应该使用哪一个?

时间:2016-08-16 08:33:08

标签: .net base-class-library

我注意到许多库(例如,Math.net,NodaTime,TALib .NET端口(用于技术分析的库),Redis db的StackExchange客户端)使用Double而不是Decimal。这是为什么?
我知道Double计算速度更快,但使用Double时精度有问题,不是吗?
更具体的例子 - 我有一个项目,我可以使用货币和货币的转换率。源数据通常不超过4个小数位(例如54.9320,并且我要求所有计算至少有6个小数位。目前我在任何地方都使用小数。我错了吗?我应该切换到双倍?

1 个答案:

答案 0 :(得分:0)

正常情况下,Decimal用于与金钱/价格相关的所有内容,因为Double的精确度仅为16位十进制数字,如果数量很大,则可能容易出错。

System.Single > float - 7 digits
System.Double > double - 15-16 digits
System.Decimal > decimal - 28-29 significant digits

现在谈到为什么库使用Double的问题,可能是因为浮点数学运算本身由处理器支持,并且它使用更少的内存。虽然decimal类型在表示基数为10时更准确。