SQL中的real、float、decimal、numeric數據類型區別

来源:https://www.cnblogs.com/Sungeek/archive/2020/01/08/12167796.html
-Advertisement-
Play Games

概述: 浮點數據類型包括real型、float型、decimal型和numeric型。浮點數據類型用於存儲十進位小數。 在SQL Server 中浮點數值的數據採用上舍入(Round up)的方式進行存儲,所謂上舍入也就是,要舍入的小數部分不論其大小, 只要是一個非零的數,就要在該數字的最低有效位上 ...


概述:

浮點數據類型包括real型、float型、decimal型和numeric型。浮點數據類型用於存儲十進位小數。

在SQL Server 中浮點數值的數據採用上舍入(Round up)的方式進行存儲,所謂上舍入也就是,要舍入的小數部分不論其大小,

只要是一個非零的數,就要在該數字的最低有效位上加1,併進行必要的進位。

由於浮點數據為近似值,所以並非數據類型範圍內的所有數據都能精確地表示。

 

1、區別說明

decimal(numeric):同義,用於精確存儲數值

float 和 real:不能精確存儲數值

 

2、real數據類型

real型數據的存儲大小為4個位元組,可精確到小數點後第7位數字。

這種數據類型的數據存儲範圍為從-3.40E+38~-1.18E-38,0和1.18E-38~3.40E+38。

在MSSQL中real的同義詞是float,用法幾乎一樣。

 

3、float數據類型

float型的數據存儲大小為8個位元組,可精確到小數點後第15位數字。

這種數據類型的數據存儲範圍為從-1.79E+308~-2.23E-308,0和2.23E+308~1.79E+308。

FLOAT(size,d) 帶有浮動小數點的小數字。在括弧中規定最大位數。在 d 參數中規定小數點右側的最大位數。

float型的數據可寫成float[(n)]的形式。其中n是1~15之間的整數值,指定float型數據的精度。當n為1~7時,實際上用戶定義了一個real型的數據,系統用4個位元組存儲;

當n為8~15時,系統認為它是個float型的數據,用8個位元組存儲它。這樣既增強了數據定義的靈活性,又節省了空間。

 

4、decimal(numeric)數據類型

decimal數據類型和numeric數據類型的功能完全一樣,它們都可以提供小數所需要的實際存儲空間,

但也有一定的限制,用戶可以用2~17個位元組來存儲數據,取值範圍是-1038+1~1038-1。

DECIMAL(size,d) 作為字元串存儲的 DOUBLE 類型,允許固定的小數點。在括弧中規定最大位數。

其中size表示可供存儲的值的總位數(不包括小數點),預設值為18;d表示小數點後的位數,預設值為0;

參數之間的關係是0≤d≤size。例如:decimal(15,5)表示共有15位數,其中整數10位,小數5位。

若一個數是上舍入數,其絕對值不會減少。如:對3.14159265358979 分別進行2 位和12位舍入,結果為3.15 和3.141592653590。

在精度上還是有很大的差別的,所以在創建資料庫時一定要對欄位的數據類型進行精準的分析,確保在插入數據值的最大精度上不要出現差錯這樣才不會使數據在運算的過程中出現大的偏差。

例如在月底或者年底彙總報表時查詢出的數據是小數,在運算完以後的數據也是小數,可是在增加到彙總表裡的時候變成整數了,

這種情況往往就是資料庫中表在建立的時候沒有有效的設置浮點型數據的小數點後面精度的問題使其數據發生了上舍入現象。

說明:

舍入是一種修約規則。在日常的生活中,我們為了精簡格式,記憶方便,常常用四捨五入的方法來去掉零頭或湊個整數來解決此問題。

四捨五入是一種非常靈活的方法。因此不管是在日常生活中還是在數學計算中四捨五入方法應用的都比較廣泛。

除了四捨五入的舍入方法外還有其他不同的舍入規則、在數學中也有其獨特的定義。

 

創建的表:

 

實例1:

這邊我創建了個表用的real,float,decimal,我創建的欄位類型是DECIMAL(3,1),長度是3,小數為1

查詢出來的數據,遵循四捨五入,這裡我插入了88.04,所以查詢出來是88.0

 

實例2:

這邊我對decimal的欄位插入88.05,查詢出來的數據是88.1

 

實例3:

這邊測試一下超過長度會怎樣,小數位在表中是保留1位,所以無論你輸入多少位,都是保留1位,也不會報錯,但是超出長度就會報錯

將 varchar 轉換為數據類型 numeric 時出現算術溢出錯誤。

 

按照上面實例插入了兩條數據,可得知結果:

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 安裝IIS7 1、打開伺服器管理器(開始-電腦-右鍵-管理-也可以打開),添加角色 直接下一步 勾選Web伺服器(IIS),下一步,有個註意事項繼續下一步(這裡我就不截圖了) 勾選ASP.NET會彈出以下視窗添加所需的角色服務,勾選CGI(這裡根據個人情況勾選,CGI是必選的,否則PHP不生效的) ...
  • 一、原理 1、Hypervisor是一種運行在物理伺服器和操作系統之間的中間軟體層,可允許多個操作系統和應用共用一套基礎物理硬體,它能直接訪問物理設備,會給每一臺虛擬機分配記憶體、CPU、網路、磁碟等資源,也可以確保虛擬機對應的硬體資源不被其他虛擬機訪問,是所有虛擬化技術的核心。 2、虛擬機 指通過軟 ...
  • 關於日誌切割 日誌文件包含了關於系統中發生的事件的有用信息,在排障過程中或者系統性能分析時經常被用到。對於忙碌的伺服器,日誌文件大小會增長極快,伺服器會很快消耗磁碟空間,這成了個問題。除此之外,處理一個單個的龐大日誌文件也常常是件十分棘手的事。logrotate是個十分有用的工具,它可以自動對日誌進 ...
  • test簡介 測試命令test用於形成一個表達式,結合條件判斷語句if-else來判斷。 例如可以判斷某個文件是否存在,是否具備什麼樣的特性(可讀嗎?可寫嗎?可執行嗎?塊文件嗎?)等等。 測試命令test有三種語法格式: test EXPRESSION [ EXPRESSION ] [[ EXPRE ...
  • Delete ms-resource:AppName/Text ...
  • 背景 By 魯迅 By 高爾基 說明: 1. Kernel版本:4.14 2. ARM64處理器,Contex A53,雙核 3. 使用工具:Source Insight 3.5, Visio 1. 概述 是一種物理地址反向映射虛擬地址的方法。 映射 頁表用於虛擬地址到物理地址映射,其中的 頁表項記 ...
  • Mysql存儲引擎 1.MyISAM MySQL 5.0 之前的預設資料庫引擎,最為常用。擁有較高的插入,查詢速度,但不支持事務. 2.InnoDB事務型資料庫的首選引擎,支持ACID事務,支持行級鎖定, MySQL 5.5 起成為預設資料庫引擎. 3.BDB源 自 Berkeley DB,事務型數 ...
  • Index Merge特性 在MySQL 5.5之前版本中,查詢或子查詢被限制在一個表只能使用一個索引(回表查詢除外)。 假設表TB1001上C1和C2列分別有單列索引,如對下麵查詢: SELECT * FROM TB1001 WHERE C1='XXX' OR C2='XXX'; 單獨使用任一索引 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...