首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

为啥sqlsever2000的float 10/100 的结果不是0.1呢?解决方法

2012-01-20 
为啥sqlsever2000的float 10/100 的结果不是0.1呢?刚才无意发现selectconvert(float,10)/convert(float,10

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

热点排行
Bad Request.