我应该使用哪一个和什么时候?

这个问题在这里已经有了答案:

  • 什么时候应该使用double而不是小数? 12个答案

  • 对于金钱, 总是小数。 这就是它被创造的原因。

    如果数字必须正确合计或平衡,请使用小数。 这包括任何财务存储或计算,分数或人们可能手动完成的其他数字。

    如果数字的确切值不重要,请使用double来表示速度。 这包括图形,物理或其他物理科学计算,其中已经有“有效位数”。


    我的问题是什么时候应该使用双精度型,什么时候应该使用小数型?

    decimal ,当你使用10 ^(+/- 28)范围内的值时,以及你对基于10次表示的行为有预期 - 基本上是金钱。

    double当你需要相对精确度(即在大的值的结尾数字失去精度不是问题)跨越很大的不同幅度- double覆盖超过10 ^(+/- 300)。 科学计算是最好的例子。

    哪种类型适合金钱计算?

    十进制,十进制, 十进制

    不接受替代品。

    最重要的因素是,作为二进制小数实现的double ,根本不能准确地表示许多decimal部分(如0.1),其整数位数较小,因为它是64位宽,而decimal位是128位。 最后,金融应用通常必须遵循特定的舍入模式(有时由法律授权)。 decimal支持这些; double不。


    System.Single / float - 7位数字
    System.Double / double - 15-16位数
    System.Decimal / decimal - 28-29有效数字

    使用错误类型(好几年前)我被蜇伤的方式有很多:

  • £520,532.52 - 8位数字
  • £1,323,523.12 - 9位数字
  • 你花了100万美元买了一个浮动。

    15位货币价值:

  • £1,234,567,890,123.45
  • 9万亿加倍。 但通过分割和比较,它更加复杂(我绝对不是浮点数和无理数的专家 - 请参阅Marc的观点)。 混合小数和双打会导致问题:

    如果使用十进制数字,则使用浮点数字的数学或比较操作可能不会产生相同的结果,因为浮点数字可能不是十分接近十进制数字。

    什么时候应该使用double而不是小数? 有一些相似和更深入的答案。

    对货币应用使用double精度而不是decimal是一种微观优化 - 这是我观察它的最简单的方法。

    链接地址: http://www.djcxy.com/p/3635.html

    上一篇: Which one should I use and when?

    下一篇: Limiting floats to two decimal points