真實,浮動,小數和金錢之間的差異是什麼。最重要的是,我什麼時候可以使用它們。就像我所理解的那樣 - 真實和浮動大約是。類型,這意味着他們不存儲確切的價值。你爲什麼要這樣?Sql Server 2005數據類型
由於
真實,浮動,小數和金錢之間的差異是什麼。最重要的是,我什麼時候可以使用它們。就像我所理解的那樣 - 真實和浮動大約是。類型,這意味着他們不存儲確切的價值。你爲什麼要這樣?Sql Server 2005數據類型
由於
真實和浮子數值類型如與物理尺寸或數學結果遇到處理非常寬範圍的值是有用的。
例如,當添加不在相同範圍內的值時,它們所引起的精度損失,例如0.00002468 + 1.23E9(即1,230,000)通常可用於實際應用。這是向這些浮點類型的相對緊湊的存儲需求付出的小禮物。
小數和金額類型不包括如此廣泛的範圍(但它們涵蓋的範圍超出了最典型的會計應用程序),並且不會出現舍入等有損行爲。
有關詳細信息,請參閱MS-SQL文檔。下表提供了指示各種類型的精度,範圍和存儲要求。
Type Max value precision(*) Storage money +/-922,000,000,000,000 3 (4?) 8 bytes smallmoney +/-200,000 3? 4 bytes decimal varies (as defined) varies varies 3 to 17 real +/- 3.4 * 10^38 7 digits 4 bytes float "56" +/- 1.7 * 10 ^308 15 digits 8 bytes (float can also be declared to be just like a real)
(*)精度:對於「精確」的類型,這是數字的小數點後的位數。對於「有損」實數和浮點數,這是有效位數。
錢是確切的數據類型。因爲在它的上限和下限之間是連續的。當你想存儲金錢的價值時,你通常會使用它,並且不想失去精確度並且得到由IEEE754引起的舍入誤差。十進制是一種類似的精確數據類型,在一定的小數位數(您可以指定)內不會有損。實際等同於浮動(24)。
要清楚,使用除法時仍會發生精確損失,但所有其他基本數學運算不會導致Money和小數類型的精確損失。
See here有關各種Transact SQL數據類型的說明。