SQL SERVER的浮点数类型及与C#的对应关系
SQL SERVER:
float 与 real
7位数或15位数。这里说的位数,不是指小数位,而是包括整数和小数在内的位数。
float的位数是多少,要看float[(n)]里的n数值是多少。
n value | 精度 | 存储大小 |
---|---|---|
1-24 |
7 位数 |
4 字节 |
25-53 |
15 位数 |
8 字节 |
SQL Server 将 n 视为下列两个可能值之一。如果 1<=n<=24,则将 n 视为 24。如果 25<=n<=53,则将 n 视为 53。 |
(是不是很怪异)
如果不写这个n,默认n是53,即15位。
real 的 ISO 同义词为 float(24),也就是7位了。
declare @f float(18) = 12345.0123456789
,@f2 float(18) = 1234567.0123456789
,@f3 float(18) = 123456789.0123456789
,@f4 float(53) = 123456789.01234567890123456789;
declare @r real = 1234567.01234567890123456789;
select @f as [f],@f2 as [f2],@f3 as [f3],@f4 as [f4],@r as [real];
f f2 f3 f4 real
12345.01 1234567 1.234568E+08 123456789.012346 1234567
decimal和numeric
带固定精度和小数位数的数值数据类型。
- decimal[ (p[ , s] )] 和 numeric[ (p[ , s] )]
-
固定精度和小数位数。使用最大精度时,有效值从 - 10^38 +1 到 10^38 - 1。decimal 的 ISO 同义词为 dec 和 dec(p, s)。numeric 在功能上等价于 decimal。
- p(精度)
-
最多可以存储的十进制数字的总位数,包括小数点左边和右边的位数。该精度必须是从 1 到最大精度 38 之间的值。默认精度为 18。
- s (小数位数)
-
小数点右边可以存储的十进制数字的最大位数。小数位数必须是从 0 到 p 之间的值。仅在指定精度后才可以指定小数位数。默认的小数位数为 0;因此,0 <= s <= p。最大存储大小基于精度而变化。
精度 存储字节数 1 - 9
5
10-19
9
20-28
13
29-38
17
- 可见,decimal和numeric可以指定小数位数。如果不指定,默认是不带小数。
-
declare @d decimal = 12.0123456789,@d2 decimal(5,3) = 12.0123456789;
select @d as [d],@d2 as [d2];d d2
- 12 12.012
- money和smallmoney
-
代表货币或货币值的数据类型。
数据类型 范围 存储 money
-922,337,203,685,477.5808 到 922,337,203,685,477.5807
8 字节
smallmoney
-214,748.3648 到 214,748.3647
4 字节
注释
money 和 smallmoney 数据类型精确到它们所代表的货币单位的万分之一。
也就是说,money和smallmoney的小数位固定是4位。
declare @m money = 123456789.0123456789;
select @m as [money];money
123456789.0123C#
float
-
float 关键字表示存储 32 位浮点值的简单类型。 下表显示了 float 类型的精度和大致范围。
类型
大致范围
精度
.NET Framework 类型
float
-3.4 × 1038 到 +3.4 × 1038
7 位
double
double 关键字表示存储 64 位浮点值的简单类型。 下表显示了 double 类型的精度和大致范围。
类型
大致范围
精度
.NET Framework 类型
double
±5.0 × 10−324 到 ±1.7 × 10308
15 到 16 位
decimaldecimal 关键字表示 128 位数据类型。 同浮点型相比,decimal 类型具有更高的精度和更小的范围,这使它适合于财务和货币计算。 decimal 类型的大致范围和精度如下表所示。
类型
大致范围
精度
.NET Framework 类型
decimal
(-7.9 x 1028 - 7.9 x 1028) / (100 - 28)
28 到 29 位有效位
结论如果只是用于价格、款项之类的数据,SQL SERVER这边可以用smallmoney、money、或者精确一些,用decimal[(p[,s])]来限定整数位数和小数位数。与之相对应,C#这里可以用decimal来赋值。C#里面,decimal类型的话,数值后面要带m或M,如0.01m。=======================================================================================网上有高人做了一个列表<Language From="SQL" To="C#">
<Type From="bigint" To="long" />
<Type From="binary" To="object" />
<Type From="bit" To="bool" />
<Type From="char" To="string" />
<Type From="datetime" To="DateTime" />
<Type From="decimal" To="decimal" />
<Type From="float" To="double" />
<Type From="image" To="byte[]" />
<Type From="int" To="int" />
<Type From="money" To="decimal" />
<Type From="nchar" To="string" />
<Type From="ntext" To="string" />
<Type From="numeric" To="decimal" />
<Type From="nvarchar" To="string" />
<Type From="real" To="float" />
<Type From="smalldatetime" To="DateTime" />
<Type From="smallint" To="short" />
<Type From="smallmoney" To="decimal" />
<Type From="text" To="string" />
<Type From="timestamp" To="byte[]" />
<Type From="tinyint" To="byte" />
<Type From="uniqueidentifier" To="Guid" />
<Type From="varbinary" To="byte[]" />
<Type From="varchar" To="string" />
<Type From="xml" To="string" />
<Type From="sql_variant" To="object" />
</Language>
<Language From="SQL" To="C# System Types">
<Type From="bigint" To="System.Int64" />
<Type From="binary" To="System.Object" />
<Type From="bit" To="System.Boolean" />
<Type From="char" To="System.String" />
<Type From="datetime" To="System.DateTime" />
<Type From="decimal" To="System.Decimal" />
<Type From="float" To="System.Double" />
<Type From="image" To="System.Byte[]" />
<Type From="int" To="System.Int32" />
<Type From="money" To="System.Decimal" />
<Type From="nchar" To="System.String" />
<Type From="ntext" To="System.String" />
<Type From="numeric" To="System.Decimal" />
<Type From="nvarchar" To="System.String" />
<Type From="real" To="System.Single" />
<Type From="smalldatetime" To="System.DateTime" />
<Type From="smallint" To="System.Int16" />
<Type From="smallmoney" To="System.Decimal" />
<Type From="text" To="System.String" />
<Type From="timestamp" To="System.Byte[]" />
<Type From="tinyint" To="System.Byte" />
<Type From="uniqueidentifier" To="System.Guid" />
<Type From="varbinary" To="System.Byte[]" />
<Type From="varchar" To="System.String" />
<Type From="xml" To="System.String" />
<Type From="sql_variant" To="System.Object" />
</Language><DbTarget From="SQL" To="SqlClient">
<Type From="bigint" To="SqlDbType.BigInt" />
<Type From="binary" To="SqlDbType.Binary" />
<Type From="bit" To="SqlDbType.Bit" />
<Type From="char" To="SqlDbType.Char" />
<Type From="datetime" To="SqlDbType.DateTime" />
<Type From="decimal" To="SqlDbType.Decimal" />
<Type From="float" To="SqlDbType.Float" />
<Type From="image" To="SqlDbType.Image" />
<Type From="int" To="SqlDbType.Int" />
<Type From="money" To="SqlDbType.Money" />
<Type From="nchar" To="SqlDbType.NChar" />
<Type From="ntext" To="SqlDbType.NText" />
<Type From="numeric" To="SqlDbType.Decimal" />
<Type From="nvarchar" To="SqlDbType.NVarChar" />
<Type From="real" To="SqlDbType.Real" />
<Type From="smalldatetime" To="SqlDbType.SmallDateTime" />
<Type From="smallint" To="SqlDbType.SmallInt" />
<Type From="smallmoney" To="SqlDbType.SmallMoney" />
<Type From="text" To="SqlDbType.Text" />
<Type From="timestamp" To="SqlDbType.Timestamp" />
<Type From="tinyint" To="SqlDbType.TinyInt" />
<Type From="uniqueidentifier" To="SqlDbType.UniqueIdentifier" />
<Type From="varbinary" To="SqlDbType.VarBinary" />
<Type From="varchar" To="SqlDbType.VarChar" />
<Type From="xml" To="SqlDbType.Xml" />
<Type From="sql_variant" To="SqlDbType.Variant" />
</DbTarget>
<DbTarget From="SQLCE" To="SqlServerCe">
<Type From="bigint" To="SqlDbType.BigInt" />
<Type From="binary" To="SqlDbType.Binary" />
<Type From="bit" To="SqlDbType.Bit" />
<Type From="char" To="SqlDbType.Char" />
<Type From="datetime" To="SqlDbType.DateTime" />
<Type From="decimal" To="SqlDbType.Decimal" />
<Type From="float" To="SqlDbType.Float" />
<Type From="image" To="SqlDbType.Image" />
<Type From="int" To="SqlDbType.Int" />
<Type From="money" To="SqlDbType.Money" />
<Type From="nchar" To="SqlDbType.NChar" />
<Type From="ntext" To="SqlDbType.NText" />
<Type From="numeric" To="SqlDbType.Decimal" />
<Type From="nvarchar" To="SqlDbType.NVarChar" />
<Type From="real" To="SqlDbType.Real" />
<Type From="smalldatetime" To="SqlDbType.SmallDateTime" />
<Type From="smallint" To="SqlDbType.SmallInt" />
<Type From="smallmoney" To="SqlDbType.SmallMoney" />
<Type From="text" To="SqlDbType.Text" />
<Type From="timestamp" To="SqlDbType.Timestamp" />
<Type From="tinyint" To="SqlDbType.TinyInt" />
<Type From="uniqueidentifier" To="SqlDbType.UniqueIdentifier" />
<Type From="varbinary" To="SqlDbType.VarBinary" />
<Type From="varchar" To="SqlDbType.VarChar" />
<Type From="xml" To="SqlDbType.Xml" />
<Type From="sql_variant" To="SqlDbType.Variant" />
</DbTarget>(源文章:http://www.cnblogs.com/eng308/archive/2010/06/01/1748824.html)
SQL SERVER的浮点数类型及与C#的对应关系的更多相关文章
- SQL Server数据库字段类型说明
SQL Server数据库字段类型说明 目前Sql Server 数据库一共有X个字段类型,大体分为9类,分别是字符串类型.二进制码字符串数据类型.Unincode字符串数据.整数类型.精确数据类型. ...
- .SQL Server中 image类型数据的比较
原文:.SQL Server中 image类型数据的比较 在SQL Server中如果你对text.ntext或者image数据类型的数据进行比较.将会提示:不能比较或排序 text.ntext 和 ...
- SQL Server返回DATETIME类型,年、月、日、时、分、秒、毫秒
SQL Server返回DATETIME类型的年.月.日,有两种方法,如下所示: DECLARE @now DATETIME=GETDATE() --第一种方法 SELECT @now,YEAR(@n ...
- SQL SERVER ->> CXPacket等待类型
最近做了一个项目,把整个数据仓库平台下所有的表和索引都改成页级别的数据压缩.昨天发现测试环境下的某个workload跑得比平时慢.最后我们定位了到这个workload做的事情中可能造成性能下降的地方, ...
- 【转】SQL Server 2008 新类型介绍之Date和Time
转自CSDN TJVictor专栏:http://blog.csdn.net/tjvictor/archive/2009/07/13/4344429.aspx SQL Server 2008除了 ...
- Sql Server 的服务器类型
Sql Server 提供了四种服务器类型: 如图所示 : 1, 数据库引擎 2, Analysis Services (分析服务 ) 3, Reporting Services (报告服务) ...
- sql server 各种等待类型-转
等待的类型 资源等待 当某个工作线程请求访问某个不可用的资源(因为该资源正在由其他某个工作线程使用,或者该资源尚不可用)时,便会发生资源等待.资源等待的示例包括锁等待.闩锁等待.网络等待以及磁盘 I/ ...
- sql server字符串的类型
sql server字符串分为不同的类型,下面就将为您介绍几个sql server字符串的常见类型,希望对您学习sql server字符串能有所帮助. nchar 此数据类型可存储1~4000个定长U ...
- 170406回顾-SQL Server的smalldatetime类型比较
在比较SQL Server的类型为smalldatetime字段时出现下面的错误:将 expression 转换为数据类型 smalldatetime 时出现算术溢出错误 正确的比较方法如下:将lon ...
随机推荐
- Python迭代器(斐波拉切数列实例)
将一个容器通过iter()函数处理后,就变成了迭代器.迭代器有2个魔法方法__iter__.__next__,一个迭代器必须实现__iter__,这个方法实际上是返回迭代器本身(return self ...
- 2018年排名前20的数据科学Python库
Python 在解决数据科学任务和挑战方面继续处于领先地位.业已证明最有帮助的Python库,我们选择 20 多个库,因为其中一些库是相互替代的,可以解决相同的问题.因此,我们将它们放在同一个分组. ...
- SecureCRT连接Ubuntu报The remote system refused the connection.解决方案
使用SecureCRT连接到远程Ubuntu,连接失败报The remote system refused the connection. 进入Ubuntu系统,终端中敲入以下命令: ps -ef|g ...
- node post和get请求原理
重要:GET和POST请求他们都是上行请求,都是把数据从浏览器带向服务器的方式, GET 请求实际上就是识别URL中的querystring部分POST请求,一般用来发送大量的内容,此时node非常害 ...
- EF CodeFirst 基础命令
PM> enable-migrations 已在项目"EasyWeChat.Data"中启用迁移.若要覆盖现有迁移配置,请使用 -Force 参数. PM> add-m ...
- html 复杂表格
123456789 123456789 0000000000 日期 123456789 1234560000000789 ----------- ----------- ----------- --- ...
- APICloud上啦加载下拉刷新模块
apicloud有自带的上啦加载下拉刷新,当让也可以用第三方或者在模块库里面找一个使用 一.下拉刷新,一下代码写在 apiready = function (){} 里面 apiready = fun ...
- 【转】虚拟化(二):虚拟化及vmware workstation产品使用
vmware workstation的最新版本是10.0.2.相信大家也都使用过,其中的简单的虚拟机的创建,删除等,都很简单,这里就不再详细说明了,下面我将简单介绍下vmware workstatio ...
- python 生成HTmL报告页面 V1.3 修改字体颜色
HTML报告V1.3 根据文字内容显示不同的字体颜色: 代码如下: # -*- coding=utf-8 -*- import time,os """ V1.2 1.生成 ...
- [luogu1971 NOI2011] 兔兔与蛋蛋游戏 (二分图博弈)
传送门 Solution 补一篇二分图博弈 这个博客写的很详细qwq: https://www.cnblogs.com/maijing/p/4703094.html Code //By Menteur ...