在数据库中某字段类型定义的是float型,可是当系统运行时输入0.32时,存入数据库表中的数据却是0.3111111111,很奇怪的现象,是不是数据类型定义的不对还是什么别的原因,在这里请教各位大侠,希望可以为我解决这个问题。非常急,大家帮帮忙啊!谢谢!

解决方案 »

  1.   

    因为大部分浮点形数据都是以2的幂来计算的,所以发生数据精度丢失是有可能的,如果要保持比较高的精度,MS SQL帮助文件中对float和real都明确指明:“用于表示浮点数字数据的近似数字数据类型。浮点数据为近似值;并非数据类型范围内的所有数据都能精确地表示。”float 和 real 数据类型被称为近似的数据类型。在近似数字数据类型方面,float 和 real 数据的使用遵循 IEEE 754 标准。近似数字数据类型并不存储为多数数字指定的精确值,它们只储存这些值的最近似值。在很多应用程序中,指定值与存储值之间的微小差异并不明显。但有时这些差异也值得引起注意。由于 float 和 real 数据类型的这种近似性,当要求精确的数字状态时,比如在财务应用程序中,在那些需要舍入的操作中,或在等值核对的操作中,就不使用这些数据类型。这时就要用 integer、decimal、money 或 smallmone 数据类型。
      

  2.   

    好像float的精度是6位,double的是12位,写入数据库时用decimal吧