Sql Server中decimal(numeric )、float 和 real 資料類型的區別

來源:互聯網
上載者:User

 

 

decimal 資料類型最多可儲存 38 個數字,所有數字都能夠放到小數點的右邊。decimal 資料類型儲存了一個準確(精確)的數字表達法;不儲存值的近似值。 

定義 decimal 的列、變數和參數的兩種特性如下:  

·          p   小數點左邊和右邊數字之和,不包括小數點。如 123.45,則 p=5,s=2。

指定精度或對象能夠控制的數字個數。

·          s

指定可放到小數點右邊的小數位元或數字個數。

p 和 s 必須遵守以下規則:0 <= s <= p <= 38。

numericdecimal 資料類型的預設最大精度值是 38。在 Transact-SQL 中,numeric decimal 資料類型在功能上等效。

當資料值一定要按照指定精確儲存時,可以用帶有小數的 decimal 資料類型來儲存數字。

float real 資料

float real 資料類型被稱為近似的資料類型。在近似數字資料類型方面,floatreal 資料的使用遵循 IEEE 754 標準。

近似數字資料類型並不儲存為多數數字指定的精確值,它們只儲存這些值的最近似值。在很多應用程式中,指定值與儲存值之間的微小差異並不明顯。但有時這些差異也值得引起注意。由於 floatreal 資料類型的這種近似性,當要求精確的數字狀態時,比如在財務應用程式中,在那些需要舍入的操作中,或在等值核對的操作中,就不使用這些資料類型。這時就要用 integerdecimalmoney smallmone 資料類型。

在 WHERE 子句搜尋條件中(特別是 = 和 <> 運算子),應避免使用 floatreal 列。最好限制使用 floatreal 列做 > 或 < 的比較。

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 floatreal 轉換會導致精度損失。從 intsmallinttinyintfloatrealmoney smallmoneydecimalnumeric 轉換會導致溢出。

預設情況下,在將數字轉換為較低精度和小數位元的 decimalnumeric 值時,SQL Server 使用舍入法。然而,如果 SET ARITHABORT 選項為 ON,當發生溢出時,SQL Server 會出現錯誤。若僅損失精度和小數位元,則不會產生錯誤。

 

Float 的科學計數法與值的問題,問題的根源在於 float 類型本身是一種不精確的資料表示方法, 也就是說, 你放一個資料進去, 拿出來的時候可能會存在一點點點誤差, 而這點點點誤差在做資料比較的時候就會導致資料不一致.

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.