decimal 和 numeric
GPS平台、网站建设、软件开发、系统运维,找森大网络科技!
https://cnsendnet.taobao.com
来自森大科技官方博客
http://www.cnsendblog.com/index.php/?p=2121
decimal 和 numeric (Transact-SQL)
参数
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 (小数位数)
小数点右边可以存储的十进制数字的位数。 从 p 中减去此数字可确定小数点左边的最大位数。 小数点右边可以存储的十进制数字的最大位数。 小数位数必须是从 0 到 p 之间的值。仅在指定精度后才可以指定小数位数。 默认的小数位数为 0;因此,0 <= s <= p。 最大存储大小基于精度而变化。
精度 |
存储字节数 |
1 - 9 |
5 |
10-19 |
9 |
20-28 |
13 |
29-38 |
17 |
转换 decimal 和 numeric 数据
对于 decimal 和 numeric 数据类型,SQL Server 会将精度和小数位数的每个特定组合视为不同的数据类型。 例如,将 decimal(5,5) 和 decimal(5,0) 视为不同的数据类型。
在 Transact-SQL 语句中,带有小数点的常量将自动转换为 numeric 数据值,而且使用必需的最小精度和小数位数。 例如,常量 12.345 将被转换为精度为 5,小数位数为 3 的 numeric值。
从 decimal 或 numeric 转换为 float 或 real 会导致精度的降低。 从 int、smallint、tinyint、float、real、money 或 smallmoney 转换为 decimal 或 numeric 会导致溢出。
默认情况下,将数字转换为较低精度和小数位数的 decimal 或 numeric 值时,SQL Server 会进行舍入。 但如果 SET ARITHABORT 选项为 ON,则发生溢出时,SQL Server 会产生错误。 若仅降低精度和小数位数,则不会产生错误。
在将 float 值或实数值转换为 decimal 或 numeric 类型时,decimal 值不会超过 17 位小数。 任何小于 5E-18 的 float 值总是会转换为 0。
示例
以下示例将使用 decimal 和 numeric 数据类型创建一个表。 值将插入每一列,并使用 SELECT 语句返回结果。
CREATE TABLE dbo.MyTable
(
MyDecimalColumn decimal(5,2)
,MyNumericColumn numeric(10,5)
);
GO
INSERT INTO dbo.MyTable VALUES (123, 12345.12);
GO
SELECT MyDecimalColumn, MyNumericColumn
FROM dbo.MyTable;
下面是结果集:
MyDecimalColumn MyNumericColumn
--------------------------------------- ---------------------------------------
123.00 12345.12000
(1 row(s) affected)
GPS平台、网站建设、软件开发、系统运维,找森大网络科技!
https://cnsendnet.taobao.com
来自森大科技官方博客
http://www.cnsendblog.com/index.php/?p=2121
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
2019-12-19 LINQ入门(完结篇)