欄位運算透過Round設定取到小數2位時,顯示出來的卻超過小數2位?
最近有朋友在問,他使用Access當資料庫,欄位運算透過Round設定取到小數2位時,顯示出來的卻超過小數2位。
詢問他使用的欄位資料型態為單精準數,於是建立一個T1資料表來測試。建立3個欄位如下,
C1:單精準數
C2:單精準數
C3:雙精準數
資料分別輸入為
12001, 13,12001
23103, 13, 23103
然後建立以下的查詢
Select Round( C1/C2, 2) As C1_2, Round(C3/C2, 2) as C3_C2 From T1
結果,單精準數運算出來的結果,果然是超過小數2位,而雙精準數運算出來的結果,則是正常的,如下,
即然知道是因為資料型態所造成的問題,所以解決有2個,一個是將資料型態由「單精準數」改成「雙精準數」,或是運算時,轉成「雙精準數」也可以,如下,
Select Round( CDBL(C1/C2), 2) As C1_2, Round(C3/C2, 2) as C3_C2 From T1
Hi,
亂馬客Blog已移到了 「亂馬客 : Re:從零開始的軟體開發生活」
請大家繼續支持 ^_^