XPath的floor()、ceiling()、round()均为数值取整函数:floor()向下取整(如floor(-2.1)→-3),ceiling()向上取整(如ceiling(-1.9)→-1),round()四舍五入且0.5恒进一(如round(-2.5)→-2)。

XPath 的 floor()、ceiling() 和 round() 都是数值取整函数,用于对浮点数做不同方式的舍入处理,只能作用于数字(或能转为数字的值),返回整数。
floor():向下取整
把数值向负无穷方向取整,即“舍去小数部分”,不看小数大小,直接取不大于该数的最大整数。
- floor(3.9) → 3
- floor(3.0) → 3
- floor(-2.1) → -3(注意:-3 比 -2.1 更小,所以是向下)
- floor("4.7") → 4(字符串会自动转为数字)
ceiling():向上取整
把数值向正无穷方向取整,即“进一取整”,取不小于该数的最小整数。
- ceiling(3.1) → 4
- ceiling(5.0) → 5
- ceiling(-1.9) → -1(-1 大于 -1.9,是最小的不小于它的整数)
- ceiling("2.0001") → 3
round():四舍五入到最接近的整数
按数学常规四舍五入;当小数部分正好是 0.5 时,XPath 1.0 规定**向正无穷方向舍入**(即 0.5 总是进一)。
- round(2.4) → 2
- round(2.5) → 3(不是“偶数规则”,而是无条件进一)
- round(-2.5) → -2(因为 -2 > -2.5,且是离 -2.5 更近、且“向正无穷”的整数)
- round(0.5) → 1,round(-0.5) → 0
这些函数常用于 XPath 表达式中处理计算结果,比如:floor(@price div 10) 得到价格按 10 元分档的下限档位。注意它们不能直接处理节点集——需先用 number() 或算术运算转为数值。
基本上就这些,不复杂但容易忽略负数行为和 round(0.5) 的特殊规则。










