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() 數學運算。
floor()
執行標準 floor() 數學運算。
ceil()
執行標準 ceil() 數學運算。
fract()
傳回輸入值的分數部分,也就是顯示在小數點右側的浮點值部分。
sin()
執行標準 sin() 三角函數運算。
cos()
執行標準 cos() 三角函數運算。
tan()
執行標準 tan() 三角函數運算。
asin()
執行標準 asin() 三角函數運算。傳回的值一律在 $ [-\frac{\pi}{2}, \frac{\pi}{2}] $ 的範圍內。
acos()
執行標準 acos() 三角函數運算。傳回的值一律在 $ [0.0, \pi] $ 之間。
atan()
執行標準 atan() 三角函數運算。傳回的值一律在 $ [-\frac{\pi}{2}, \frac{\pi}{2}] $ 的範圍內。
abs()
將輸入值轉換為浮點值,然後執行標準 abs() 數學運算。
clamp(,,)
將輸入值轉換為浮點值,然後執行 clamp() Jetpack 運算,讓第一個值符合第二和第三個值定義的範圍。
rand(,)

產生可同時滿足下列條件的隨機浮點值:

  • 大於或等於第一個值。
  • 小於或等於第二個值。

假設第一個值小於或等於第二個值。

log()

執行標準 Base-$ e $ log() 數學運算。

log2()

模擬底數為 2 的對數。這個值的計算方式是將底數 10 的對數 (輸入值的 log10) 除以 $ 2 $ 的底數 10 對數。

log10()

執行標準 Base-10 log10 數學運算。

sqrt()

執行標準 sqrt() 數學運算。

cbrt()

執行標準 cbrt() 數學運算。

exp()

執行標準 exp() 數學運算。

expm1()

如果輸入值為 $ 1 $,會直接呼叫 expm1() 數學運算。若是其他輸入值,則會執行標準 exp() 數學運算,然後減去 1 來模擬函式。

deg()

執行標準 toDegrees() 數學運算。$ \frac{\pi}{2} $ 會定義為 90 度,$ \pi $ 則定義為 180 度。

rad()

執行標準 toRadians() 數學運算。90 度會定義為 $ \frac{\pi}{2} $,180 度則定義為 $ \pi $。

pow(,)

執行標準 pow() 數學運算。輸出值一律為浮點數。

numberFormat(,)

將第一個值的數字格式套用至第二個值。

第一個值可包含下列字元:

  • #:代表數字。
  • ,:代表大數字中的半形逗號分隔符。
  • .:代表小數點。
icuText()

輸入日期格式字串轉換為符合預期語言代碼格式的模式。如果父項 PartText 元素包含 Localization 元素,就會使用該語言代碼的格式,否則會使用 Wear OS 裝置目前的語言代碼。

舉例來說,如果是在美國使用裝置,EE, MMM d, yyyy h:mm a 的輸入值會產生下列輸出內容:Tue, Mar 14, 2023 1:59 PM

icuBestText()

輸入日期格式字串轉換為符合預期格式的目前時間模式。如果父項 PartText 元素包含 Localization 元素,就會使用該語言代碼的格式,否則會使用 Wear OS 裝置目前的語言代碼。

舉例來說,如果是在 2023 年 3 月 14 日下午 1 點 59 分於美國使用裝置,則 yyyy MMM d EE a h:mm 的輸入值會產生下列輸出內容:Tue, Mar 14, 2023, 1:59 PM

subText(,,)

擷取第一個值的子字串。第二個值代表在第一個值從 0 起算的索引中,子字串開始的位置。第三個值代表在第一個值從 0 起算的索引中,應停止擷取子字串的位置 (「從第二個值開始,但不包含第三個值」)。

範例:

  • subText("abc def", 2, 5)」將在 c d後開始
  • subText("abc def", 2, 7)」將在 c def後開始
textLength()

計算輸入字串的長度。

運算子

錶面格式會將下列字串值視為運算子:

+
一元加號,或加上多個值。同時支援整數和浮點值。
-
一元減號,或減去多個值。同時支援整數和浮點值。
*
多個整數或浮點值的乘法運算。
/

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