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 同义词为 decdec(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 字节

注释

moneysmallmoney 数据类型精确到它们所代表的货币单位的万分之一。

也就是说,money和smallmoney的小数位固定是4位。

declare @m money = 123456789.0123456789;
select @m as [money];

money
123456789.0123

C#

float

float 关键字表示存储 32 位浮点值的简单类型。 下表显示了 float 类型的精度和大致范围。

类型

大致范围

精度

.NET Framework 类型

float

-3.4 × 1038 到 +3.4 × 1038

7 位

System.Single

double

double 关键字表示存储 64 位浮点值的简单类型。 下表显示了 double 类型的精度和大致范围。

类型

大致范围

精度

.NET Framework 类型

double

±5.0 × 10−324 到 ±1.7 × 10308

15 到 16 位

System.Double

decimal

decimal 关键字表示 128 位数据类型。 同浮点型相比,decimal 类型具有更高的精度和更小的范围,这使它适合于财务和货币计算。 decimal 类型的大致范围和精度如下表所示。

类型

大致范围

精度

.NET Framework 类型

decimal

(-7.9 x 1028 - 7.9 x 1028) / (100 - 28)

28 到 29 位有效位

System.Decimal

结论
如果只是用于价格、款项之类的数据,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#的对应关系的更多相关文章

  1. SQL Server数据库字段类型说明

    SQL Server数据库字段类型说明 目前Sql Server 数据库一共有X个字段类型,大体分为9类,分别是字符串类型.二进制码字符串数据类型.Unincode字符串数据.整数类型.精确数据类型. ...

  2. .SQL Server中 image类型数据的比较

    原文:.SQL Server中 image类型数据的比较 在SQL Server中如果你对text.ntext或者image数据类型的数据进行比较.将会提示:不能比较或排序 text.ntext 和 ...

  3. SQL Server返回DATETIME类型,年、月、日、时、分、秒、毫秒

    SQL Server返回DATETIME类型的年.月.日,有两种方法,如下所示: DECLARE @now DATETIME=GETDATE() --第一种方法 SELECT @now,YEAR(@n ...

  4. SQL SERVER ->> CXPacket等待类型

    最近做了一个项目,把整个数据仓库平台下所有的表和索引都改成页级别的数据压缩.昨天发现测试环境下的某个workload跑得比平时慢.最后我们定位了到这个workload做的事情中可能造成性能下降的地方, ...

  5. 【转】SQL Server 2008 新类型介绍之Date和Time

     转自CSDN TJVictor专栏:http://blog.csdn.net/tjvictor/archive/2009/07/13/4344429.aspx   SQL Server 2008除了 ...

  6. Sql Server 的服务器类型

    Sql Server 提供了四种服务器类型: 如图所示  : 1, 数据库引擎  2, Analysis Services (分析服务 )  3, Reporting  Services (报告服务) ...

  7. sql server 各种等待类型-转

    等待的类型 资源等待 当某个工作线程请求访问某个不可用的资源(因为该资源正在由其他某个工作线程使用,或者该资源尚不可用)时,便会发生资源等待.资源等待的示例包括锁等待.闩锁等待.网络等待以及磁盘 I/ ...

  8. sql server字符串的类型

    sql server字符串分为不同的类型,下面就将为您介绍几个sql server字符串的常见类型,希望对您学习sql server字符串能有所帮助. nchar 此数据类型可存储1~4000个定长U ...

  9. 170406回顾-SQL Server的smalldatetime类型比较

    在比较SQL Server的类型为smalldatetime字段时出现下面的错误:将 expression 转换为数据类型 smalldatetime 时出现算术溢出错误 正确的比较方法如下:将lon ...

随机推荐

  1. 5.30dao-service-controller层,mybatis自动生成。(获取根据id主键获取指定详细数据)

    获取权限详细数据:(参考)                    1.controller:1.注入Servcie调用方法findConsumerById(参数是id);               ...

  2. GitHub上fork别人打代码后如何保持和原作者同步的更新

    1.进入你的GitHub发起Pull  request 2.选择compare across  forks 3.反向操作.base fork改为自己的,head fork改为原作者的 4.点击 cre ...

  3. Android Studio and Gradle安装心得

    安装基于Eclipse 的ADT一段时间,感觉确实有很多功能不足,通过网上资料,决定改向AS. AS下载了最新的2.3版本,它不分64位与32位,网上说有单独版是瞎扯蛋.只要启动不同的EXE就行了. ...

  4. L4课程_Firebase_笔记分享_StudyJams_2017

    最近才发现Study Jams China的官方论坛也支持MarkDown,所以就直接把笔记发在了那儿. http://www.studyjamscn.com/thread-21855-1-1.htm ...

  5. 【SQL】IN、EXISTS和表连接三者的效率比较

    一. IN和EXISTS比较 在许多基于基础表的查询中,为了满足一个条件,往往需要对另一个表进行查询.此时就会用到IN和EXISTS. 例如:查询departments表中存在的部门的人数. 1. 使 ...

  6. 人脸Pose检测:ASM、AAM、CLM总结

    人脸的Pose检测可以使用基于位置约束的特征点的方法.人脸特征点定位的目的是在人脸检测的基础上,进一步确定脸部特征点(眼睛.眉毛.鼻子.嘴巴.脸部外轮廓)的位置.定位算法的基本思路是:人脸的纹理特征和 ...

  7. 用一条mysql语句插入多条数据

    这篇文章主要介绍了在mysql中使用一条sql语句插入多条数据,效率非常高,但是原理其实很简单,希望对大家有所帮助 假如有一个数据表A: id name title addtime 如果需要插入n条数 ...

  8. cocos ios Label组件问题

    软件:cocos creator v1.9.0 开发的过程中,一直在web上预览,Label组件显示一直没问题.在打包到ios上时,出现问题了: Label组件: 当我们缩小字体,发现没问题了,当我们 ...

  9. 25-Ubuntu-文件和目录命令-其他命令-重定向

    重定向 Linux允许将命令执行结果重定向到一个文件. 将本应显示到终端上的内容输出或追加到指定文件中. 重定向命令 含义 > 表示输出,会覆盖原有文件. >> 表示追加,会将内容追 ...

  10. Android 性能测试初探(二)

    书接前文 Android 性能测试初探(一).上回大体介绍了下在 android 端的性能测试项,现在我们就细节测试项做一些阐述(包括如何自己 DIY 测试). 首先我们来说说启动时间.关于应用的启动 ...