建议不要使用money 类型,有类似浮点的误差!建议使用numeric(19,6)之类的明确定义!

解决方案 »

  1.   

    货币数据
    货币数据表示正的或负的货币值。在 Microsoft® SQL Server™ 2000 中使用 money 和 smallmoney 数据类型存储货币数据。货币数据存储的精确度为四位小数。可以存储在 money 数据类型中的值的范围是 -922,337,203,685,477.5808 至 +922,337,203,685,477.5807(需 8 个字节的存储空间)。可以存储在 smallmoney 数据类型中的值的范围是 -214,748.3648 至 214,748.3647(需 4 个字节的存储空间)。如果数值超过了上述范围,则可使用 decimal 数据类型代替。
      

  2.   

    decimal 和 numeric
    decimal从 -10^38 +1 到 10^38 –1 的固定精度和小数位的数字数据。 numeric功能上等同于 decimal。money 和 smallmoney
    money货币数据值介于 -2^63 (-922,337,203,685,477.5808) 与 2^63 - 1 (+922,337,203,685,477.5807) 之间,精确到货币单位的千分之十。smallmoney货币数据值介于 -214,748.3648 与 +214,748.3647 之间,精确到货币单位的千分之十。近似数字
    float浮点精度数字数据,有效值为:从 -1.79E + 308 到 -2.23E - 308,0 和 2.23E + 308 到 1.79E + 308。real浮点精度数字数据,有效值为:从 -3.40E + 38 到 -1.18E - 38,0 和 1.18E - 38 到 3.40E + 38。
      

  3.   

    我印象当中 money 类型并不等同于某种定点小数的定义,
    除非是硬件系统或当时的软件系统有bug !