为啥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吧