跳到主要内容
版本:2.0.0

占位符数学运算

区别

Mod端和Bukkit端的语法基本上一致,但是他们的实现方式不同

  • Bukkit使用placeholderapimath变量
  • 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.9955.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

遇到麻烦了?

我们提供有偿代安装服务,解决您的环境配置烦恼。

了解详情