ArithmeticExpression

一系列算术函数和运算,其他表盘格式元素利用其解析实时属性值和陀螺效应。

此元素在 Wear OS 4 中推出。

示例

以下示例表达式基于 Wear OS 设备加速度计的 $ x $ 值,用于在任一方向上将某个值旋转最多 5 度:

(5/90)*clamp([ACCELEROMETER_ANGLE_X],0,90) + (-5/90)*clamp([ACCELEROMETER_ANGLE_X],-90,0)

…此表达式相当于以下数学表达式,其中 $ \theta_x $ 表示 $ x $ 方向上的加速度计角度:

$$ \frac{5}{90} * max(min(\theta_x, 90), -90) $$

函数

表盘格式将以下字符串值识别为函数:

功能 说明 返回值类型 适用范围
round() 将输入值转换为浮点值,然后执行标准的 round() 数学运算。 整数 版本 1
floor() 执行标准的 floor() 数学运算。 浮点数 版本 1
ceil() 执行标准的 ceil() 数学运算。 浮点数 版本 1
fract() 返回输入值的小数部分;即显示在小数点右侧的浮点值部分。 浮点数 版本 1
sin() 执行标准的 sin() 三角函数运算。 浮点数 版本 1
cos() 执行标准的 cos() 三角函数运算。 浮点数 版本 1
tan() 执行标准的 tan() 三角函数运算。 浮点数 版本 1
asin() 执行标准的 asin() 三角函数运算。返回的值始终在 $ [-\frac{\pi}{2}, \frac{\pi}{2}] $ 的范围内。 浮点数 版本 1
acos() 执行标准的 acos() 三角函数运算。返回的值始终在 $ [0.0, \pi] $ 的范围内。 浮点数 版本 1
atan() 执行标准的 atan() 三角函数运算。返回的值始终在 $ [-\frac{\pi}{2}, \frac{\pi}{2}] $ 的范围内。 浮点数 版本 1
abs() 将输入值转换为浮点值,然后执行标准的 abs() 数学运算。 浮点数 版本 1
clamp(,,) 将输入值转换为浮点值,然后执行 clamp() Jetpack 操作,使第一个值符合第二个值和第三个值定义的范围。 浮点数 版本 1
rand(,) 生成同时满足以下条件的随机浮点值:
  • 大于或等于第一个值。
  • 小于或等于第二个值。
假设第一个值小于或等于第二个值。
浮点数 版本 1
log() 执行标准的以 $ e $ 为底数的 log() 数学运算。 浮点数 版本 1
log2() 模拟以 2 为底的对数。此值的计算方法为:输入值的以 10 为底数的 log() 除以 $ 2 $ 的以 10 为底数的对数。 浮点数 版本 1
log10() 执行标准的以 10 为底数的 log() 数学运算。 浮点数 版本 1
sqrt() 执行标准的 sqrt() 数学运算。 浮点数 版本 1
cbrt() 执行标准的 cbrt() 数学运算。 浮点数 版本 1
exp() 执行标准的 exp() 数学运算。 浮点数 版本 1
expm1() 如果输入值为 $ 1 $,则直接调用 expm1() 数学运算。对于任何其他输入值,执行标准的 exp() 数学运算,然后减去 1,从而模拟该函数。 浮点数 版本 1
deg() 执行标准的 toDegrees() 数学运算。 $ \frac{\pi}{2} $ 定义为 90 度,$ \pi $ 则定义为 180 度。 浮点数 版本 1
rad() 执行标准的 toRadians() 数学运算。90 度定义为 $ \frac{\pi}{2} $,180 度则定义为 $ \pi $。 浮点数 版本 1
pow(,) 执行标准的 pow() 数学运算。输出值始终是浮点数。 浮点数 版本 1
numberFormat(,) 将第一个值中的数字格式应用于第二个值。第一个值可以包含以下字符:
  • # - 表示数位。
  • , - 表示多位数字中的逗号分隔符。
  • . - 表示小数点。
字符串 版本 1
icuText()

输入日期格式字符串转换为与预期的语言区域格式匹配的模式。如果父 PartText 元素包含 Localization 元素,则系统会使用该语言区域的格式。否则,请改用 Wear OS 设备的当前语言区域。

例如,如果在美国使用设备,则 EE, MMM d, yyyy h:mm a 的输入值会生成以下输出:Tue, Mar 14, 2023 1:59 PM

字符串 版本 1
icuText(,)

将第一个参数输入日期格式字符串转换为与预期的语言区域格式匹配的模式。第二个参数是一个时间戳字符串(以毫秒为单位)。

如果父 PartText 元素包含 Localization 元素,则系统会使用该语言区域的格式。否则,请改用 Wear OS 设备的当前语言区域。

字符串 版本 2
icuBestText()

输入日期格式字符串转换为模式与预期格式匹配的当前时间。如果父 PartText 元素包含 Localization 元素,则系统会使用该语言区域的格式。否则,请改用 Wear OS 设备的当前语言区域。

例如,如果于 2023 年 3 月 14 日下午 1:59 在美国使用设备,则 yyyy MMM d EE a h:mm 的输入值会生成以下输出:Tue, Mar 14, 2023, 1:59 PM

字符串 版本 1
icuBestText(,)

将第一个参数输入日期格式字符串转换为模式与预期格式匹配的当前时间。第二个参数是一个时间戳字符串(以毫秒为单位)。

如果父 PartText 元素包含 Localization 元素,则系统会使用该语言区域的格式。否则,请改用 Wear OS 设备的当前语言区域。

字符串 版本 2
subText(,,)

从第一个值中提取子字符串。第二个值表示第一个值中应作为子字符串起始点的索引(从 0 开始计数)。第三个值表示第一个值中应作为子字符串提取结束点的索引(从 0 开始计数;“从第二个值起,到第三个值终,但不包含第三个值”)。

示例:
  • subText("abc def", 2, 5)c d
  • subText("abc def", 2, 7)c def
字符串 版本 1
textLength()

计算输入字符串的长度。

示例:
  • subText("abc def", 2, 5)c d
  • subText("abc def", 2, 7)c def
字符串 版本 1

运算符

表盘格式将以下字符串值识别为运算符:

+
一元加号,或多个值相加。同时支持整数和浮点值。
-
一元减法,或多个值相减。同时支持整数和浮点值。
*
多个整数值或浮点值相乘。
/

2 个整数或浮点值相除。

如果 2 个整数相除的结果为非整数值,则浮点结果将保留小数部分。例如,$ \frac{1}{2} = 0.5 $。

此外,表达式 $ \frac{x}{0} $ 的求值结果为 0,其中 $ x $ 为任意整数。

%

2 个整数或浮点值的模除。

如果两个运算数均为整数,则结果为这两个值相除的余数。例如,$ 19 \bmod 7 = 5 $。

如果至少一个运算数为浮点数,则结果为与余数对等的浮点值;例如,$ 19.0 \bmod 7 = 5.0 $。

~

按位“非”运算符。示例如下:

  • ~1 为 $ -2 $
  • ~0 为 $ -1 $
!

逻辑“非”运算符,支持双重否定。示例如下:

  • $ !2 $ 为 false
  • $ !!0 $ 为 true
|

按位“或”运算符。支持 2 个以上的输入值。示例如下:

  • $ 1 | 0 = 1 $
  • $ 1 | 2 | 4 = 7 $
||
逻辑“或”运算符。
&
按位“与”运算符。仅支持 2 个输入值。
&&
逻辑“与”运算符。
(
左圆括号。用于更改标准运算的顺序,其中乘法和除法通常优先于加法和减法。
)
右圆括号。用于更改标准运算的顺序,其中乘法和除法通常优先于加法和减法。
<
“小于”比较运算符。比较整数值与对等的浮点值时,结果为 false
<=
“小于或等于”比较运算符。比较整数值与对等的浮点值时,结果为 true
>
“大于”比较运算符。比较整数值与对等的浮点值时,结果为 false
>=
“大于或等于”比较运算符。比较整数值与对等的浮点值时,结果为 true
?”和“:

支持三元运算。常规格式如下:

condition ? value_if_true : value_if_false

支持使用括号进行嵌套三元运算。

,

对接受多个参数的函数中的值进行分隔。

"

放置在值的开头和结尾时,表示表盘格式应将值解读为字符串。

==

比较是否相等。比较整数值与对等的浮点值时,结果为 true

!=

比较是否不等。比较整数值与对等的浮点值时,结果为 false