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() 執行標準 Base-$ e $ log() 數學運算。 浮點數 版本 1
log2() 模擬底數為 2 的對數。這個值的計算方式是將輸入值的底數 10 log() 除以 $ 2 $ 的底數 10 對數。 浮點數 版本 1
log10() 執行 Base-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 個整數或浮點值的同餘除法運算。

如果兩個運算元都是整數,結果會是除以 2 個值的餘數,例如 $ 19 \bmod 7 = 5 $。

如有至少一個運算元是浮點數,結果就會是與餘數相等的浮點數,例如 $ 19.0 \bmod 7 = 5.0 $。

~

位元「not」運算子。以下提供幾個範例:

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

邏輯「not」運算子,支援雙負值。以下提供幾個範例:

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

位元「or」運算子。支援超過 2 個輸入值。以下提供幾個範例:

  • $ 1 | 0 = 1 $
  • $ 1 | 2 | 4 = 7 $
||
邏輯「or」運算子。
&
位元「and」運算子。只支援 2 個輸入值。
&&
邏輯「and」運算子。
(
左括號。用於變更標準運算順序。在標準運算順序中,乘除法通常優先於加減法。
)
右括號。用於變更標準運算順序。在標準運算順序中,乘除法通常優先於加減法。
<
「小於」比較運算子。比較整數值與相等的浮點值時,結果會是 false
<=
「小於或等於」比較運算子。比較整數值與相等的浮點值時,結果會是 true
>
「大於」比較運算子。比較整數值與相等的浮點值時,結果會是 false
>=
「大於或等於」比較運算子。比較整數值與相等的浮點值時,結果會是 true
?:

支援三元運算。一般格式如下:

condition ? value_if_true : value_if_false

支援使用括號建立巢狀三元運算。

,

可在引數超過 1 個的函式中將值分開。

"

放在值的開頭和結尾時,表示錶面格式應將值解讀為字串。

==

比較相等的情形。比較整數值與相等的浮點值時,結果會是 true

!=

比較不相等的情形。比較整數值與相等的浮點值時,結果會是 false