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

PHP 浮點數轉整數的三種方法:floor、ceil、round 詳解

     編輯:PHP 綜合知識

方法對比速查表

函數行為返回類型典型用例
floor()向下取整(捨去小數)float分頁計算、索引下界
ceil()向上取整(進一法)float分頁總頁數、資源配額
round()四捨五入(可指定精度)float金額計算、統計展示

代碼示例與輸出

1. floor() — 向下取整

echo floor(4.3);    // 4
echo floor(9.999);  // 9
echo floor(-3.14);  // -4  (注意負數方向)

2. ceil() — 向上取整

echo ceil(4.3);     // 5
echo ceil(9.999);   // 10
echo ceil(-3.14);   // -3

3. round() — 四捨五入

echo round(3.4);        // 3
echo round(3.5);        // 4
echo round(3.6);        // 4
echo round(3.6, 0);     // 4
echo round(1.95583, 2); // 1.96
echo round(1241757, -3);// 1242000 (精度 -3 表示千位)
echo round(5.045, 2);   // 5.04 (銀行家捨入:偶數優先)
echo round(5.055, 2);   // 5.06

關鍵細節

  1. 返回類型均為 float:因 float 範圍大於 int,若需 int 請強制轉型 (int)floor($x)
  2. 負數方向:floor 向 -∞,ceil 向 +∞
  3. 精度參數:round($val, $precision) 支持負數(十位、百位...)
  4. 銀行家捨入:PHP 採用「四捨六入五成雙」,5.045→5.04、5.055→5.06
  5. 浮點數精度陷阱:floor(0.58*100) 可能得 57,建議 floor(round($val, 2)*100) 或用 BCMath

實戰選型指南

  • 分頁總頁數:ceil($total / $perPage)
  • 數組分塊索引:floor($index / $chunkSize)
  • 貨幣金額分/元轉換:round($yuan * 100) 或 bcadd/bcmul
  • 統計平均值展示:round($avg, 2)
  • 隨機數縮放:floor(mt_rand()/mt_getrandmax() * $max)

進階:BCMath 高精度替代

// 避免浮點誤差
bcmul('0.58', '100', 0);     // '58'
bcdiv('10', '3', 2);         // '3.33'
bcadd('1.234', '5.678', 3);  // '6.912'
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved