哪种情况下要用到 float型呀,另外,定义 float 型时,float(n) 中的N如何定呀? 哪种情况下要用float型,而不用numeric型?
---------------------------------
我想,既然有这种类型,就有存在的必要,但是我不知在哪种情况下要用float型,而不用numeric型.
还有:定义 float 型时,位数如何设定呀?哪种情况下不宜用 numeric,而最好用 float 型呢?
同理 real 型也有这个问题.
---------------------------------
我想,既然有这种类型,就有存在的必要,但是我不知在哪种情况下要用float型,而不用numeric型.
还有:定义 float 型时,位数如何设定呀?哪种情况下不宜用 numeric,而最好用 float 型呢?
同理 real 型也有这个问题.
所以我还是不明白,能用精确值,为何用近似值呢?
任何情况下不是精确更好吗?用 numeric 来代替 float 不是更好吗?
当然,是我不明白,所以想问问大家呀?
set @b = 1.0 /3
select @a,@b
/*
----------------------------------------------------- -----------------
0.33333299999999999 .3333330000(所影响的行数为 1 行)
*/
有两个参数:p(精度)和s(小数位数)。p指定小数点左边和右边可以存储的十进制数字的最大个数,p必须是从 1到38之间的值。s指定小数点右边可以存储的十进制数字的最大个数,s必须是从0到p之间的值,默认小数位数是0。
这个N如何设定,好象不是小数位数呀,精度是一个什么概念呀?
Microsoft SQL Server 2000/2005 将 n 作为两个可能的值来处理。如果 1<=n<=24,n 作为 24 处理。如果 25<=n<=53,则 n 作为 53 处理。SQL Server 中,real 的同义词为 float(24)。n范围:
[1, 24] --> 4字节,可以理解为单精度
[25,53] --> 8字节,可以理解为双精度
哪种情况下呢?
再次,比如你想存1/3 ,要求能最大精度保留的数据,那应该是0.333333333333333。。 ,3不尽,那么float就能胜任,而且numeric就不行了,总是要精度范围的
declare @tmp table (a1 float,a2 numeric(18,2))
insert into @tmp values (0.3,0.3)
select * from @tmp
谢谢,我知道二者在表现形式上的区别,但是关键是,什么情况下要用float型.
我就是不知道它的用途在哪方面.因为我写的程序中,从未用到过float型,所以有点不明白.