2012年12月26日 星期三

[學習] decimal 小數點位數 四捨五入

[SQL]
select round(1.5446,2)
1.5400

select round(round(1.5446,3),2)
1.5500

select CAST(1.5446 AS decimal(9,2))
1.54

select CAST(1.546 AS decimal(9,2))
1.55


*資料型態decimal
  -生產數、工作分鐘 

SELECT 生產數,工作分鐘,
生產數/工作分鐘*60,
Convert(Decimal(18,4),生產數/工作分鐘)*60,
floor(convert(decimal(18,4),生產數/工作分鐘)*60),
floor(生產數/工作分鐘*60),

Round(生產數/工作分鐘*60,1) AS 小數第1位,
Round(生產數/工作分鐘*60,4) AS 小數第4位,

(生產數/工作分鐘*60*10+0.5)/10,
FLOOR(生產數/工作分鐘*60*10+0.5)/10
FROM tblA



[ACCESS]

SELECT 生產數,工作分鐘,
 Round(生產數/工作分鐘*60,1),
 Int(CDBL(生產數/工作分鐘)*60*10+0.5)/10 ,
 Int((生產數/工作分鐘)*60*10+0.5)/10 
 FROM tblA

互相比對結果值(EXCEL)








[VB]
小數點表示法
^[0-9]+(.[0-9]{1,6})?$

通過
0
0.
0.0
0.123456
123456789.123456

-----------------

資料庫 insert 時,decimal型態自動進位(四捨五入)。
假設小位數到3,資料庫 decimal型態就必須設置小數點到3。
當然在程式設計時,也必須 decimal 型態 到小數點3。

-----------------

1. 整數以下四捨五入
     int(46410*0.05+0.5)=2321

2. 例 : 12.346 四捨五入至小數點以下一位
     int(12.346*10+0.5)/10=12.3

3. 例 : 12.346 四捨五入至小數點以下二位
     int(12.346*100+0.5)/100=12.35

參考:
浮點數計算結果更接近正解? 算錢用浮點,遲早被人扁

沒有留言:

張貼留言