ric*_*ott 1 sql-server precision types
SQL Sever 2000 文档:
浮点数数据是否具有以下有效值:-3.40E + 38到-1.18E - 38,0和1.18E - 38到3.40E + 38.存储大小为4个字节.在SQL Server中,real的同义词是float(24).
SQL Server 2005 文档:
real的ISO同义词是float(24).
编辑:鉴于我正在阅读它说精度是7但我可以输入我的数据库(SQL Server 2005)最多9见下文,如同在这里类似声明问题编号.7.
示例:0.180000082
什么是真正的精度实以及是否有配置选项:可影响精度(即兼容模式)?
您的答案是在您链接的同一页面上:
对于FLOAT数据类型,n是用于以科学计数法存储尾数的位数
24位尾数给出(大约)7个十进制数字的精度(因为2 ^ 24~ = 10 ^ 7).
编辑添加:
请注意,每个人都在说'大约' - 这是有原因的:)
二进制浮点数和十进制文字不一定以直观的方式一起播放.背景阅读每个计算机科学家应该知道的关于浮点运算的内容.另请注意,说"大约7位精度的十进制数字"与能够存储超过7位有效数字的值并不相容!但这确实意味着此数据类型将无法区分0.180000082和0.180000083,例如,因为它实际上并未存储以下两者的确切值:
declare @f1 real
declare @f2 real
set @f1 = 0.180000082
set @f2 = 0.180000083
select @f1, @f2
select @f1 - @f2
Run Code Online (Sandbox Code Playgroud)
------------- -------------
0.1800001 0.1800001
(1 row(s) affected)
-------------
0
(1 row(s) affected)
Run Code Online (Sandbox Code Playgroud)
事实是,与24位尾数的二进制浮点数real相同float(24),我不相信有一种方法可以改变它.如果要存储精确的十进制数量,浮点类型通常不是一个好的选择.