sql定义一个double变量怎么定义

sql定义一个double变量怎么定义,第1张

declare @abc float

set @abc=CAST(123123656 as decimal(38,3))

print @abc

你看这样行不行。

mysql 数据库float,int,bigint,double区别

精度浮点数(float)的尾数是用24bit表示的,双精度(double)浮点数的尾数是用53bit表示的,转换成十进制: 2^24 - 1 = 16777215 2^53 - 1 = 9007199254740991 由上可见,IEEE754单精度浮点数的有效数字二进制是24位,按十进制来说

float和double是浮点数。

可能05在数据库中存储的是049999999999999;

而你传递的参数,05可能是049999999

极有可能导致 不等;

解决办法:

用范围查询:

不用float,用numeric或者decimal数据类型,确定精度

在SQL Server中,实际上小数数值只有两种数据类型:float 和 decimal,分别是近似数值和精确数值。

float 表示近似数值,存在精度损失,数据类型是 float(n),n是可选的,默认类型是float(53),占用8bytes。虽然n的取值范围是1-53,实际上,float 只能表示两种类型float(53) 和 float(24),分别占用 8Bytes 和 4Bytes。

decimal不存在精度损失,数据类型decimal(p,s) 需要分别指定小数的最大位数(p)和小数位的数量(s)。decimal 数据类型的最大精度为 38。即decimal 数据类型最多可以存储 38位数字,所有这些数字均可位于小数点后面。decimal 数据类型存储精确的数字表示形式,没有近似值。

扩展资料:

双精度(double precision)数据类型等价于 float(53),real等价于float(24),numeric是 decimal的同义词,应该避免在程序中直接使用 double precision、real和numeric,而是用 float(24) 、float(53)和decimal 代替。

float是近似数值,存在精度缺失;decimal是精确数值,不存在精度损失。当数值不允许精度丢失时,使用 decimal数据类型存储数据。在计算小数的除法时,SQL Server 内部隐式升级数据类型,根据小数数值的数据类型,就近向float(24) 或float(53)转换。

decimal[ (p[ , s] )] 和 numeric[ (p[ , s] )]

1 <= p <= 38,0 <= s <= p

即最大是 decimal(38,38),decimal 默认是 decimal(18,0),decimal 和 numeric 是等价的

不是用double

decimal(size,d)

numeric(size,d)

容纳带有小数的数字。

"size" 规定数字的最大位数。"d" 规定小数点右侧的最大位数。

以上就是关于sql定义一个double变量怎么定义全部的内容,包括:sql定义一个double变量怎么定义、mysql 数据库float,int,bigint,double区别、我用SQL条件查询语句查询的,条件是 float或 double类型的1.0以下的不能查询,以上的可以,这是为什么呀等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9333989.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-27
下一篇 2023-04-27

发表评论

登录后才能评论

评论列表(0条)

保存