首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> Oracle 資料庫 >> Oracle 資料庫基礎

Oracle 數值精度控制函數:ROUND、TRUNC、CEIL、FLOOR 實戰對比

     編輯:Oracle 資料庫基礎

四大函數行為對比

函數語法行為範例輸入結果
ROUNDROUND(n [, d])四捨五入到小數點右第 d 位(d 可負)ROUND(1.2345, 3)1.235
TRUNCTRUNC(n [, d])直接捨去小數點右第 d 位之後(不四捨五入)TRUNC(1.2345, 2)1.23
CEILCEIL(n)回傳 ≥ n 的最小整數(向上取整)CEIL(23.33)24
FLOORFLOOR(n)回傳 ≤ n 的最大整數(向下取整)FLOOR(23.33)23

進階範例

-- ROUND 負數 decimals:捨入到十位、百位
ROUND(1234.56, -1)  --> 1230
ROUND(1234.56, -2)  --> 1200

-- TRUNC 負數 decimals:歸零到十位、百位
TRUNC(1234.56, -1)  --> 1230
TRUNC(1234.56, -2)  --> 1200

-- 無 decimals 參數時預設為 0(整數)
ROUND(23.33)  --> 23
TRUNC(23.33)  --> 23

實務應用場景

  • 金融金額:會計制度常要求「捨去」而非「四捨五入」 → 用 TRUNC(amount, 2)。
  • 統計報表:百分比顯示保留 2 位小數 → ROUND(pct * 100, 2)。
  • 分頁計算:CEIL(total_rows / page_size) 取總頁數。
  • 資料分桶:FLOOR(salary / 10000) * 10000 將薪資歸入萬元區間。

效能與精度提醒

  • Oracle NUMBER 型別為可變精度(最多 38 位),上述函數均保持精度不會溢位。
  • BINARY_FLOAT/DOUBLE 型別若參與運算,會隱含轉換為二進位浮點數,可能產生 0.1 無法精確表示的經典問題 → 精度敏感場景堅持用 NUMBER。
  • 大量資料更新時,TRUNC 比 ROUND 微快(無四捨五入判斷),差異可忽略。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved