SQL Server 中使用小數(shù)
當前位置:點晴教程→知識管理交流
→『 技術文檔交流 』
在使用的時候發(fā)現(xiàn)一個問題,由于編程的習慣,當數(shù)據(jù)庫中需要存儲小數(shù)的時候,就想當然的使用了float類型,可結(jié)果太讓人意外了
數(shù)據(jù)庫中存儲了0.5沒問題,當使用0.6的時候,得到的確是0.59999999999999998,使用1.6得到的是 1.6000000000000001,0.3得到的是0.29999999999999999,很奇怪??! 在查找之后才明白原因,在sql server的幫助中這樣描述 小數(shù)數(shù)據(jù) decimal 數(shù)據(jù)包含存儲在最小有效數(shù)上的數(shù)據(jù)。在 sql server中,小數(shù)數(shù)據(jù)使用 decimal 或 numeric 數(shù)據(jù)類型存儲。存儲 decimal 或 numeric 數(shù)值所需的字節(jié)數(shù)取決于該數(shù)據(jù)的數(shù)字總數(shù)和小數(shù)點右邊的小數(shù)位數(shù)。例如,存儲數(shù)值 19283.29383 比存儲 1.1 需要更多的字節(jié)。 在 sql server中,numeric 數(shù)據(jù)類型等價于 decimal 數(shù)據(jù)類型。 近似數(shù)字數(shù)據(jù) 近似數(shù)字(浮點)數(shù)據(jù)包括按二進制計數(shù)系統(tǒng)所能提供的最大精度保留的數(shù)據(jù)。在 sql server 中,近似數(shù)字數(shù)據(jù)以 float 和 real 數(shù)據(jù)類型存儲。例如,分數(shù) 1/3 表示成小數(shù)形式為 0.333333(循環(huán)小數(shù)),該數(shù)字不能以近似小數(shù)數(shù)據(jù)精確表示。因此,從 sql server 獲取的值可能并不準確代表存儲在列中的原始數(shù)據(jù)。又如,以 .3, .6, .7 結(jié)尾的浮點數(shù)均為數(shù)字近似值。 float表示的近似值,下圖是一個測試的結(jié)果 該文章在 2010/7/31 17:30:18 編輯過 |
關鍵字查詢
相關文章
正在查詢... |