请大家谈谈float/real类型在实际应用中的作用

时间:2021-07-26 08:58:34
float 和 real
用于表示浮点数字数据的近似数字数据类型。浮点数据为近似值;并非数据类型范围内的所有数据都能精确地表示。

这是联机帮助中对两个类型的定义,也有很多朋友(多是初次使用SQL Server的朋友)经常使用此类型做为存储有小数位的数据,但在计算时会出现所得值不准确的问题

请问大家在实际开发/应用中是否使用此类型,主要用于哪些方面?

18 个解决方案

#1


一般就是用float类型用的多点,再就是numeric类型了。。
real这个类型还真从没用过```它们的区别自然也就不知道了```
帮顶, 等老大``

#2


decimal ,float ,然后是numeric类型了。
具体差别见帮助文档

#3


money 似乎是Decimal的一个子集!!??
我在存储过程中定义了一个money类型的参数,在执行时系统自动转换为Decimal类型!!

#4



查看下联机帮助吧!

用于表示浮点数值数据的大致数值数据类型。浮点数据为近似值;因此,并非数据类型范围内的所有值都能精确地表示。 

注意:  
real 的 SQL-92 同义词为 float(24)。
 


数据类型  范围  存储  
float
 -1.79E + 308 至 -2.23E - 308、0 以及 2.23E - 308 至 1.79E + 308
 取决于 n 的值
 
real
 -3.40E + 38 至 -1.18E - 38、0 以及 1.18E - 38 至 3.40E + 38
 4 字节
 

 Transact-SQL 语法约定

语法
float [ ( n ) ] 
其中 n 为用于存储 float 数值尾数的位数,以科学记数法表示,因此可以确定精度和存储大小。如果指定了 n,则它必须是介于 1 和 53 之间的某个值。n 的默认值为 53。

n value  精度  存储大小  
1-24
 7 位数
 4 字节
 
25-53
 15 位数
 8 字节
 

注意:  
SQL Server 2005 将 n 视为下列两个可能值之一。如果 1<=n<=24,则将 n 视为 24。如果 25<=n<=53,则将 n 视为 53。
 


SQL Server float[(n)] 数据类型从 1 到 53 之间的所有 n 值均符合 SQL-92 标准。double precision 的同义词为 float(53)。

#5


学习

#6


好冷...

#7


好像没有怎么看到用float 类型的, 一般都用有精确性的 decimal/numeric, 在 sql2005 sp2 及之后的版本中, 还可以在数据库上调用启用 vardecimal 功能, 这样可以用变长的方式存储 deciml/numeric 数据, 不用担心定义太长, 而用得太少, 导致增加存储开销


flat/real 一般用在对数据没有严格精确性要求的情况, 例如做服务器性能监控, 对于性能指标的值一般用 float, 因为这类值并不需要很精确, 而且有的性能指标的值非常大.

#8


在数据精确性要求不高时用FLOAT,要求缴高时用decimal numeric
我在设计的时候大多用decimal ,习惯问题,但做些小测试什么的用float
还是看需求吧

#9


是不是可以这样理解,在存储一些大的数据,且对精确性要求不高时,可以考虑使用float类型
因为float类型所占的空间要小于decimal/numeric

#10


float/real 实际中很少用,其缺点很明显,就是数据不精确
但是相对decimal/numeric,特别是在低版本SQL Server,float/real也有好处,因为decimal/numeric必须在定义的时候指定精度,在有些应用,其精度不容易事先确定的情况下,要么用decimal/numeric而精度指定到估计的最大如numeric(38,10),其他的选择就只有float/real了

#11


学习。

#12


好多星星,還有磚石,學習學習。

#13


学习~~~

#14


float   和   real 

我看能用float尽量用float.

real 一般用于工程计算.

#15


float  
居家旅行必备!

#16


几个月以前給接用友一个外包私活,帮他们的一个客户作成本核算系统,我学U8里面大量使用float

明明 0.1的数据,输出出来的0.09999936 很多地方的数据都变了,幸亏在测试的时候发现得早只有一半都要返工。


现在我都用decimal 了。

#17


收益

#18


我也想知道,正在找這方面的資料~~~~~

#1


一般就是用float类型用的多点,再就是numeric类型了。。
real这个类型还真从没用过```它们的区别自然也就不知道了```
帮顶, 等老大``

#2


decimal ,float ,然后是numeric类型了。
具体差别见帮助文档

#3


money 似乎是Decimal的一个子集!!??
我在存储过程中定义了一个money类型的参数,在执行时系统自动转换为Decimal类型!!

#4



查看下联机帮助吧!

用于表示浮点数值数据的大致数值数据类型。浮点数据为近似值;因此,并非数据类型范围内的所有值都能精确地表示。 

注意:  
real 的 SQL-92 同义词为 float(24)。
 


数据类型  范围  存储  
float
 -1.79E + 308 至 -2.23E - 308、0 以及 2.23E - 308 至 1.79E + 308
 取决于 n 的值
 
real
 -3.40E + 38 至 -1.18E - 38、0 以及 1.18E - 38 至 3.40E + 38
 4 字节
 

 Transact-SQL 语法约定

语法
float [ ( n ) ] 
其中 n 为用于存储 float 数值尾数的位数,以科学记数法表示,因此可以确定精度和存储大小。如果指定了 n,则它必须是介于 1 和 53 之间的某个值。n 的默认值为 53。

n value  精度  存储大小  
1-24
 7 位数
 4 字节
 
25-53
 15 位数
 8 字节
 

注意:  
SQL Server 2005 将 n 视为下列两个可能值之一。如果 1<=n<=24,则将 n 视为 24。如果 25<=n<=53,则将 n 视为 53。
 


SQL Server float[(n)] 数据类型从 1 到 53 之间的所有 n 值均符合 SQL-92 标准。double precision 的同义词为 float(53)。

#5


学习

#6


好冷...

#7


好像没有怎么看到用float 类型的, 一般都用有精确性的 decimal/numeric, 在 sql2005 sp2 及之后的版本中, 还可以在数据库上调用启用 vardecimal 功能, 这样可以用变长的方式存储 deciml/numeric 数据, 不用担心定义太长, 而用得太少, 导致增加存储开销


flat/real 一般用在对数据没有严格精确性要求的情况, 例如做服务器性能监控, 对于性能指标的值一般用 float, 因为这类值并不需要很精确, 而且有的性能指标的值非常大.

#8


在数据精确性要求不高时用FLOAT,要求缴高时用decimal numeric
我在设计的时候大多用decimal ,习惯问题,但做些小测试什么的用float
还是看需求吧

#9


是不是可以这样理解,在存储一些大的数据,且对精确性要求不高时,可以考虑使用float类型
因为float类型所占的空间要小于decimal/numeric

#10


float/real 实际中很少用,其缺点很明显,就是数据不精确
但是相对decimal/numeric,特别是在低版本SQL Server,float/real也有好处,因为decimal/numeric必须在定义的时候指定精度,在有些应用,其精度不容易事先确定的情况下,要么用decimal/numeric而精度指定到估计的最大如numeric(38,10),其他的选择就只有float/real了

#11


学习。

#12


好多星星,還有磚石,學習學習。

#13


学习~~~

#14


float   和   real 

我看能用float尽量用float.

real 一般用于工程计算.

#15


float  
居家旅行必备!

#16


几个月以前給接用友一个外包私活,帮他们的一个客户作成本核算系统,我学U8里面大量使用float

明明 0.1的数据,输出出来的0.09999936 很多地方的数据都变了,幸亏在测试的时候发现得早只有一半都要返工。


现在我都用decimal 了。

#17


收益

#18


我也想知道,正在找這方面的資料~~~~~