占位符数学运算
区别
Mod端和Bukkit端的语法基本上一致,但是他们的实现方式不同
- Bukkit使用
placeholderapi的math变量 - Mod端使用内置的
math变量
| 版本 | 兼容 | 说明 |
|---|---|---|
| Bukkit | 依赖PlaceholderAPI 需安装 math变量 | 安装PlaceholderAPI并使用 /papi ecloud download Math 安装 |
| Mod | 全版本兼容 | 内置轻量级表达式库 |
| Mcdr | 不兼容 | 未实现 |
| Velocity | 不兼容 | 未实现 |
关于占位符数 学运算
占位符数学运算允许你在占位符中进行简单的数学运算, 例如: %math_2+2% 会返回 4
语法
-
基本语法
%math_<表达式>%- 说明 表达式可以是任意的数学表达式, 例如:
2+2,(2+2)*2,2^2等
- 说明 表达式可以是任意的数学表达式, 例如:
-
完整语法
- 格式
%math_<小数位数>:<舍入模式>_<表达式>%
- 格式
-
保留小数点后 n 位
- 语法
%math_n:0_<表达式>% - 说明 保留小数点后 n 位,并使用指定的舍入模式。
- 语法
-
设置舍入模式
- 语法
%math_<小数>:<舍入模式>_<表达式>% - 说明 舍入模式由数字 0-7 组成:
- 0 (UP): 远离零方向舍入。
- 1 (DOWN): 靠近零方向舍入。
- 2 (CEILING): 向正无穷大方向舍入。
- 3 (FLOOR): 向负无穷大方向舍入。
- 4 (HALF_UP): 四舍五入(最常用)。
- 5 (HALF_DOWN): 五舍六入(只有 5 超过 0.5 时才进位)。
- 6 (HALF_EVEN): 银行家舍入法(向最接近的偶数舍入)。
- 7 (UNNECESSARY): 这种模式通常用于断言结果是精确的,如果需要舍入则会报错。
- 语法
-
内联变量模式
- 语法
%math_<小数位数>:<舍入模式>_<表达式>% - 说明 允许在表达使用使用其他变量,您只需要将变量名用
{}括起来即可 - 例子
- 已知查询玩家在线时间的变量是
%ez-statistic_PLAY_ONE_MINUTE%其名有误导性,实际返回的单位是游戏刻 - 已知
1游戏刻 = 1/20秒 - 要计算玩家在线了多少个小时,可以用如下表达式
%math_2:4_{ez-statistic_PLAY_ONE_MINUTE}/20/60/60%- 该表达式的计算过程如下
%ez-statistic_PLAY_ONE_MINUTE%返回的是玩家在线的游戏刻数- 每个游戏刻等于 1/20 秒
- 要转换为小时,需要先除 20 得到秒,再除 60 得到分钟,最后除 60 得到小时
- 保留两位小数并四舍五入,得到玩家在线的小时数
- 已知查询玩家在线时间的变量是
- 语法
使用示例
| 目标 | 语法示例 | 运算过程 | 结果 |
|---|---|---|---|
| 基础运算 | %math_10/3% | 10 / 3 (默认保留整数) | 3 |
| 保留两位小数 (四舍五入) | %math_2:4_10/3% | 3.3333... 取 2 位 | 3.33 |
| 向上取整 (CEILING) | %math_0:2_2.1% | 2.1 向正无穷取整 | 3 |
| 向下取整 (FLOOR) | %math_0:3_2.9% | 2.9 向负无穷取整 | 2 |
| 四舍五入为整数 | %math_0:4_2.5% | 2.5 四舍五入 | 3 |
| 远离零方向 (UP) | %math_1:0_-2.12% | -2.12 远离 0 舍入 1 位 | -2.2 |
| 靠近零方向 (DOWN) | %math_1:1_-2.18% | -2.18 靠近 0 舍入 1 位 | -2.1 |
| 复杂表达式 | %math_2:4_(10+5)*0.333% | 15 * 0.333 = 4.995 | 5.00 |
常见场景 Q&A
Q: 为什么 %math_10/3% 返回的是 3 而不是 3.33?
A: 因为默认不指定小数位数时,系统可能会按整数处理。请使用 %math_2:4_10/3% 来强制保留两位小数并进行四舍五入。
Q: 如何实现单纯的截断(不要四舍五入)?
A: 使用模式 1 (DOWN)。例如 %math_1:1_2.58% 会返回 2.5。
遇到麻烦了?
我们提供有偿代安装服务,解决您的环境配置烦恼。