`
csstome
  • 浏览: 1530346 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

SqlServer中decimal(numeric )、float 和 real 数据类型的区别

阅读更多

decimal 数据类型最多可存储 38 个数字,所有数字都能够放到小数点的右边。decimal 数据类型存储了一个准确(精确)的数字表达法;不存储值的近似值。

定义 decimal 的列、变量和参数的两种特性如下:

· p 小数点左边和右边数字之和,不包括小数点。如 123.45, p=5s=2

指定精度或对象能够控制的数字个数。

· s

指定可放到小数点右边的小数位数或数字个数。

p s 必须遵守以下规则:0 <= s <= p <= 38

numeric decimal 数据类型的默认最大精度值是 38。在 Transact-SQL 中,numeric decimal 数据类型在功能上等效。

当数据值一定要按照指定精确存储时,可以用带有小数的 decimal 数据类型来存储数字。

float real 数据

float real 数据类型被称为近似的数据类型。在近似数字数据类型方面,float real 数据的使用遵循 IEEE 754 标准。

近似数字数据类型并不存储为多数数字指定的精确值,它们只储存这些值的最近似值。在很多应用程序中,指定值与存储值之间的微小差异并不明显。但有时这些差异也值得引起注意。由于 float real 数据类型的这种近似性,当要求精确的数字状态时,比如在财务应用程序中,在那些需要舍入的操作中,或在等值核对的操作中,就不使用这些数据类型。这时就要用 integerdecimalmoney smallmone 数据类型。

WHERE 子句搜索条件中(特别是 = <> 运算符),应避免使用 float real 列。最好限制使用 float real 列做 > < 的比较。

IEEE 754 规格提供了四种舍入模式:舍入到最接近的值、上舍入、下舍入和舍入到零。Microsoft® SQL Server™ 使用上舍入。所有的数值必须精确到确定的精度,但会产生细小的浮点值变化。因为浮点数字的二进制表示法可以采用很多合法舍入规则中的任意一条,因此我们不可能可靠地量化一个浮点值。

转换 decimal numeric 数据

对于 decimal numeric 数据类型,Microsoft® SQL Server™ 将精度和小数位数的每个特定组合看作是不同的数据类型。例如,decimal(5,5) decimal(5,0) 被当作不同的数据类型。(因此在编存储过程当中使用的变量采用Real Float,而不采用decimal类型)

Transact-SQL 语句中,带有小数点的常量自动转换为 numeric 数据值,且必然使用最小的精度和小数位数。例如,常量 12.345 被转换为 numeric 值,其精度为 5,小数位为 3

decimal numeric float real 转换会导致精度损失。从 intsmallinttinyintfloatrealmoney smallmoney decimal numeric 转换会导致溢出。

默认情况下,在将数字转换为较低精度和小数位数的 decimal numeric 值时,SQL Server 使用舍入法。然而,如果 SET ARITHABORT 选项为 ON,当发生溢出时,SQL Server 会出现错误。若仅损失精度和小数位数,则不会产生错误。

Float 的科学计数法与值的问题,问题的根源在于 float 类型本身是一种不精确的数据表示方法, 也就是说, 你放一个数据进去, 拿出来的时候可能会存在一点点点误差, 而这点点点误差在做数据比较的时候就会导致数据不一致.

分享到:
评论

相关推荐

    SQL中NUMERIC和DECIMAL的区别

    在SQL语言中,`NUMERIC`和`DECIMAL`是最常用的数据类型之一,尤其是在处理需要高精度数值的情况下。 #### 一、基本概念 - **NUMERIC**: 在SQL中,`NUMERIC`是一种固定精度的数据类型,主要用于存储固定精度的十...

    SQL SERVER的数据类型自定义

    ### SQL Server 数据类型详解与自定义数据类型创建 在数据库设计与管理中,理解并熟练掌握数据类型至关重要,因为它们直接影响到数据存储的效率、...希望本文能帮助你更好地理解和应用SQL Server中的数据类型功能。

    SqlServer数据库的数据类型

    ### SqlServer数据库的数据类型详解 数据类型在编程与数据库管理中扮演着至关重要的角色,它不仅定义了数据的存储方式,还决定了数据可以执行的操作。SQL Server作为一种广泛使用的数据库管理系统,提供了丰富的...

    sql server 和oracle 中数据类型的区别

    本文将深入探讨SQL Server与Oracle中的数据类型区别,并通过具体的例子来说明这两种系统之间的转换方法。 ### SQL Server 数据类型 SQL Server 是微软开发的一款关系型数据库管理系统,它支持多种数据类型,可以...

    SQL_Server_数据类型详解

    浮点型数据类型用于存储十进制小数,包括 real 型、float 型、decimal 型和 numeric 型。 * real 型数据的存储大小为 4 个字节,可精确到小数点后第 7 位数字。这种数据类型的数据存储范围为从-3.40E+38 ~ -1.18E-...

    Microsoft Access数据类型与SQL Server数据类型的区别

    - **SQL Server**: 支持 `Real` 和 `Float` 类型,此外还支持 `Decimal` 和 `Numeric` 类型,这两个类型可以提供固定的小数点精度,适用于财务和货币数据。 **4. 日期时间类型** - **Microsoft Access**: 使用 `...

    SQL Server 2005 数据类型和.Net数据类型的对应关系.doc

    SQL Server 2005 和 .NET Framework 之间的数据类型对应关系是开发数据库应用程序时的重要基础知识。理解这些对应关系有助于确保在SQL Server中存储的数据能够正确地被.NET应用程序读取和处理。以下是对两种数据类型...

    SQL Server 数据类型总结

    在探讨SQL Server数据类型的深度与广度时,我们不得不承认,这一主题是数据库设计与管理中的基石之一。SQL Server作为一款强大的关系型数据库管理系统,提供了丰富多样的数据类型,旨在满足不同场景下的数据存储需求...

    sqlserver数据类型详解

    - **描述**:`numeric` 和 `decimal` 数据类型可以用来存储固定精度和范围的数值型数据,范围从 -10^38-1 到 10^38-1。使用时需指定范围和精度。 - **应用场景**:适用于需要精确计算的场景,例如财务报表中的金额...

    SQL SERVER数据类型表

    在SQL Server中,数据类型是定义数据库中存储的数据类型的规范,它们决定了数据的性质和范围。理解SQL Server的数据类型对于数据库设计和开发至关重要。本文将深入探讨SQL Server中常用的数据类型,帮助您更好地掌握...

    SQL SERVER 数据类型详解

    在SQL Server中,数据类型是定义列和变量的基础,它们决定了可以存储的数据种类以及存储方式。下面是关于SQL Server中各种数据类型的详细说明: 1. **bit**:位数据类型,用于存储0、1或NULL值,常用于表示布尔值...

    SQLServer2008中的数据类型总结.doc

    在SQL Server 2008中,数据类型是数据库设计的核心元素之一,它们决定了存储数据的格式、范围和精度。本文将深入探讨SQL Server 2008中的各种数据类型,帮助你理解如何根据需求选择合适的数据类型。 首先,我们可以...

    SQL SERVER数据类型详解

    在SQL Server中,数据类型是定义列、变量和其他数据库对象属性的关键部分。它们决定了可以存储在这些对象中的数据种类和格式。SQL Server提供了多种数据类型,以满足不同类型的存储需求。下面将对这些数据类型进行...

    sqlserver2008数据类型[定义].pdf

    SQL Server 2008 中的数值数据类型包括 integer、smallint、tinyint、bigint、decimal、numeric、float、real 和 money 等。这些数据类型用于存储数值数据。例如,integer 数据类型用于存储整数值,而 decimal 数据...

    三大数据库的数据类型及sql server08快捷键

    在IT行业中,数据库是存储和管理数据的核心工具。MySQL、Oracle和SQL Server是...文档"MySQL_Oracle_SqlServer三大数据库的数据类型列表.doc"和"SQL SERVER 2008快捷键.docx"将提供更详细的信息,供你深入学习和参考。

    SQLSERVER与C中数据类型的对应关系.pdf

    在开发过程中,数据库管理系统(如SQL Server)与编程语言(如C#)之间的数据类型转换是常见的需求。本文将详细探讨SQL Server与C#中数据类型的对应关系,并提供一个简单的函数示例,帮助开发者理解如何在两者之间...

    sqlServer数据类型

    在SQL Server数据库管理系统中,数据类型是至关重要的概念,它定义了存储在列中的数据的种类、格式和范围。理解并正确使用SQL Server的数据类型对于创建高效、安全且符合业务需求的数据库至关重要。以下是关于SQL ...

    sql server 数据类型大全

    - **`numeric(p,s)`**:与 `decimal` 类似,但在某些数据库系统中可能有所不同,SQL Server 中 `numeric` 和 `decimal` 是同义词。 ##### 货币型数据 - **`smallmoney`**:货币型数据,取值范围为 -214,748.3648 ...

    SQL SERVER与C#数据类型对应表

    在进行数据库操作时,了解 SQL Server 和 C# 之间的数据类型对应关系对于确保数据正确传递至关重要。本文将详细介绍 SQL Server 中的各种数据类型及其对应的 C# 类型,并对每种类型进行解释。 #### 1. 布尔类型...

Global site tag (gtag.js) - Google Analytics