网站大量收购独家精品文档,联系QQ:2885784924

关于float和decimal.pdf

  1. 1、本文档共4页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
关于float和decimal

关于 float 和 decimal 数据库设计之不要纠结  关于float 和decimal  在数据库设计中,我们纠结于选择float还是decimal的数据类型存储带小数的数字, 因为前者为4-8个字节,后者为5-17个字节。实际上对于数量和金额这类数据,假定只 带两位小数,如果要让 float 只存储为 4 个字节,则最大的精确数字为:99999.99,实 际中根本满足不了绝大多数的应用,所以实际中一般要用 float,即为 float(53),存储 为 8 个字节;我们再看 decimal,假定我们保留 8 为小数(应该是满足了绝大多数的精度 要求了),使用decimal(19,8),该类型可以准确反映最大为:99999999999该 数值为1000亿,可以满足大部分的应用了吧?这种类型存储也只不过9个字节而已。我 们需纠结那1个字节么? 假定我们一个表一年产生一千万级别的数据,其存储空间也不过增大了 9.5M1/1024/1024)。问题是这种级别的表会有很多么?在目前种 T 级别存储 的时代,似乎可以忽略不计了吧。 另外,在 SQL Server 2005 Service Pack 2 或更高版本,可启用 vardecimal 存储 格式。在 SQL Server 2008 中,用户数据库始终是启用的。 根据列的精度(1 到 38),decimal 值的存储将占用 5 到 17 个字节。当表不使用 vardecimal 存储格式时,对于每个定义的 decimal 列,该表中的每个条目会占用相同 数量的字节,即使行值为 0、NULL 或某些可以用较少量字节表示的值(如数字 3)也是 如此。使用 vardecimal 存储格式存储表时,每行的 decimal 列仅占用容纳所提供数字 所需的空间,外加 2 个字节的开销。空间占用结果始终介于 5 到 20 个字节之间。其 中包括用于存储值偏移量的 2 个字节开销。但是,会对 Null 值和零做特殊处理,它们 仅占用 2 个字节。 如果表不包含任何可变长度列,则每行需要 2 个字节的额外开销来存储可变长度列 的数量。如果表已至少包含一个可变长度列,则不需要额外开销。 第 1 / 4 页 关于 float 和 decimal 一、 float 在 SQL SERVER 中 float 表示浮点数。由于其存储特点,浮点数为近似值,因此并非 所有的数值都能准确表示,即你输入的数据可能已经被近似地存储了,所以读出来数值 并非你写入的数值。 Float表示的数据范围为:-1.79E + 308 至 -2.23E - 308、0 以及 2.23E - 308 至 1.79E + 308 在SQL SERVER中还有个Real数据类型,和Float是同义的,只是其表示的范围较小, 为:-3.40E + 38 至 -1.18E - 38、0 以及 1.18E - 38 至 3.40E + 38 Real数据类型存储为4个字节,其类型相当于Float(24)。Float的默认值为53,即 float等同于float(53)。Float的标准定义语法为:float(n)。当n24是则存储为8个 字节,否则为4个字节。n 为用于存储 float 数值尾数的位数(以科学记数法表示)。 Real的精度为7数字,如果超过7位数字,则会用近似值表示,示例如下: declare @r as real set @r=123456789 select @r 其查询结果为:1.234568E+08 declare @r as real set @r=1234567.89 select @r 其查询结果为:1234568 也就是超过千万的数字,则小数部分就表示不了了。 float的精度为15数字,如果超过15位数字,则会用近似值表示,示例如下: declare @f

文档评论(0)

hhuiws1482 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:5024214302000003

1亿VIP精品文档

相关文档