日期:2014-05-18  浏览次数:21071 次

为啥sqlsever2000的float 10/100 的结果不是0.1呢?
刚才无意发现
select   convert(float,10)/convert(float,100)
的结果居然是0.10000000000000001
为什么后面会多出那么一小点东西?求解

------解决方案--------------------
float用于表示浮点数字数据的近似数字数据类型。浮点数据为近似值;并非数据类型范围内的所有数据都能精确地表示。


------解决方案--------------------
2005的结果:
select convert(float,10),convert(float,100),convert(float,10)/convert(float,100)


---------------------- ---------------------- ----------------------
10 100 0.1

(1 row(s) affected)
------解决方案--------------------
float本来就是近似存储,求比例一般不用显示转换 select 10*1.0/100
select round(10*1.0/100,2)
------解决方案--------------------
select convert(numeric(10,2),10)/convert(numeric(10,2),100)

select convert(real,10)/convert(real,100)

-------------------------
.1000000000000

(1 row(s) affected)


------------------------
0.1

(1 row(s) affected)


------解决方案--------------------
float 是近似值,如果要定義浮點型,還是用numeric吧