前几天我们在工作中讨论了这个问题,我希望有一个 Stackoverflow 问题我可以向人们指出,所以就在这里。)
- 和有什么区别Double http://msdn.microsoft.com/en-us/library/x99xtshc(VS.71).aspx and a Decimal http://msdn.microsoft.com/en-us/library/system.decimal(VS.71).aspx?
- 什么时候(在什么情况下)你应该always use a
Double
?
- 什么时候(在什么情况下)你应该always use a
Decimal
?
- 什么是需要考虑的驱动因素如果不属于上述两个阵营之一呢?
有很多问题与这个问题重叠,但他们倾向于问在特定情况下应该做什么,而不是在一般情况下如何决定。
我通常会想natural vs 人造的数量。
自然量是指重量、高度和时间等。这些永远不会被绝对准确地测量,并且很少有任何绝对精确算术的想法:您通常不应该将高度相加,然后确保结果完全符合预期。使用double
对于这种数量。双打的范围很大,但精度有限;它们的速度也非常快。
占主导地位的人工数量是货币。有这样一个东西,“正好是 10.52 美元”,如果你加上 48 美分,你预计正好有 11 美元。使用decimal
对于这种数量。理由:鉴于它一开始就是人为的,所涉及的数字也是人为的,旨在满足人类的需求 - 这意味着它们自然地以 10 为基数表示。使存储表示与人类表示相匹配。decimal
没有范围double
,但大多数人工量也不需要这个额外的范围。它也比慢double
,但我个人有一个银行帐户,它给我正确答案的速度比快速给出错误答案的速度慢:)
有关更多信息,我有关于.NET 二进制浮点类型 http://pobox.com/~skeet/csharp/floatingpoint.html和.NET 十进制类型 http://pobox.com/~skeet/csharp/decimal.html。 (注意decimal
也是浮点类型 - 但所讨论的“点”是小数点,而不是二进制点。)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)