我经常看到有人在c#中使用双精度对象。我知道我在什么地方读到过,double有时会失去精度。 我的问题是,什么时候应该使用双精度型,什么时候应该使用十进制类型? 哪种类型适合货币计算?(即。超过1亿美元)
当前回答
我的问题是什么时候a应该使用a double和什么时候应该用小数 类型?
十进制用于处理10^(+/-28)范围内的值,以及基于10进制表示(基本上是货币)对行为的期望。
Double用于在不同的量级上需要相对精度(即在大值上失去尾随数字的精度不是问题)- Double覆盖超过10^(+/-300)。科学计算是最好的例子。
哪种类型适合用钱 计算?
十进制,十进制,十进制
不要接受替代品。
最重要的因素是,double被实现为二进制分数,根本不能准确地表示许多十进制分数(比如0.1),而且它的总位数更小,因为它是64位宽的,而不是十进制的128位宽。最后,金融应用程序通常必须遵循特定的舍入模式(有时由法律强制要求)。Decimal支持这些;双倍则不然。
其他回答
对于钱,总是小数。这就是它被创建的原因。
如果数字必须正确相加或平衡,请使用十进制。这包括任何财务存储或计算、分数或其他人们可能手工完成的数字。
如果数字的确切值不重要,可以使用double来加快速度。这包括图形学、物理学或其他物理科学计算,其中已经有“有效数字的数量”。
十进制表示精确值。Double表示近似值。
USD: $12,345.67 USD (Decimal)
CAD: $13,617.27 (Decimal)
Exchange Rate: 1.102932 (Double)
对于钱:十进制。它消耗更多的内存,但不像double有时会有舍入问题。
我认为除了位宽之外的主要区别是十进制的指数以10为底,而double的指数为2
http://software-product-development.blogspot.com/2008/07/net-double-vs-decimal.html
我的问题是什么时候a应该使用a double和什么时候应该用小数 类型?
十进制用于处理10^(+/-28)范围内的值,以及基于10进制表示(基本上是货币)对行为的期望。
Double用于在不同的量级上需要相对精度(即在大值上失去尾随数字的精度不是问题)- Double覆盖超过10^(+/-300)。科学计算是最好的例子。
哪种类型适合用钱 计算?
十进制,十进制,十进制
不要接受替代品。
最重要的因素是,double被实现为二进制分数,根本不能准确地表示许多十进制分数(比如0.1),而且它的总位数更小,因为它是64位宽的,而不是十进制的128位宽。最后,金融应用程序通常必须遵循特定的舍入模式(有时由法律强制要求)。Decimal支持这些;双倍则不然。
推荐文章
- 将字符串转换为System.IO.Stream
- 如何从枚举中选择一个随机值?
- 驻留在App_Code中的类不可访问
- 在链式LINQ扩展方法调用中等价于'let'关键字的代码
- dynamic (c# 4)和var之间的区别是什么?
- Visual Studio: ContextSwitchDeadlock
- 返回文件在ASP。Net Core Web API
- 自定义HttpClient请求头
- 如果我使用OWIN Startup.cs类并将所有配置移动到那里,我是否需要一个Global.asax.cs文件?
- VS2013外部构建错误"error MSB4019: The imported project <path> was not found"
- 从另一个列表id中排序一个列表
- 等待一个无效的异步方法
- 无法加载文件或程序集…参数不正确
- c#中枚举中的方法
- 如何从字符串中删除新的行字符?