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