Espressione aritmetica

Una raccolta di funzioni e operazioni aritmetiche, che vengono utilizzate da altri elementi del formato dei quadranti per risolvere valori degli attributi ed effetti giroscopici in tempo reale.

Introdotta in Wear OS 4.

Esempio

Un'espressione di esempio per la rotazione di un valore fino a 5 gradi in entrambe le direzioni, in base al valore $ x $ dell'accelerometro del dispositivo Wear OS:

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

...che equivale alla seguente espressione matematica, dove $\theta_x $ rappresenta l'angolo dell'accelerometro nella direzione $ x $:

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

Funzioni

Il formato del quadrante riconosce i seguenti valori di stringa come funzioni:

Funzione Descrizione Tipo restituito Disponibilità
round() Converte il valore di input in un valore a virgola mobile, quindi esegue l'operazione matematica standard di round(). Numero intero Versione 1
floor() Esegue l'operazione matematica standard di floor(). Mobile Versione 1
ceil() Esegue l'operazione matematica standard di ceil(). Mobile Versione 1
fract() Restituisce la parte frazionaria del valore di input, ovvero la parte del valore in virgola mobile visualizzata a destra del punto decimale. Mobile Versione 1
sin() Esegue l'operazione trigonometrica standard di sin(). Mobile Versione 1
cos() Esegue l'operazione trigonometrica standard di cos(). Mobile Versione 1
tan() Esegue l'operazione trigonometrica standard di tan(). Mobile Versione 1
asin() Esegue l'operazione trigonometrica standard di asin(). Il valore restituito è sempre compreso nell'intervallo $ [-\frac{\pi}{2}, \frac{\pi}{2}] $. Mobile Versione 1
acos() Esegue l'operazione trigonometrica standard di acos(). Il valore restituito è sempre compreso nell'intervallo $ [0,0, \pi] $. Mobile Versione 1
atan() Esegue l'operazione trigonometrica standard di atan(). Il valore restituito è sempre compreso nell'intervallo $ [-\frac{\pi}{2}, \frac{\pi}{2}] $. Mobile Versione 1
abs() Converte il valore di input in un valore a virgola mobile, quindi esegue l'operazione matematica standard di abs(). Mobile Versione 1
clamp(,,) Converte i valori di input in valori in virgola mobile, quindi esegue l'operazione Jetpack clamp() per adattare il primo valore nell'intervallo definito dal secondo e dal terzo valore. Mobile Versione 1
rand(,) Genera un valore in virgola mobile casuale che soddisfa contemporaneamente le seguenti condizioni:
  • Maggiore o uguale al primo valore.
  • Minore o uguale al secondo valore.
Presuppone che il primo valore sia minore o uguale al secondo valore.
Mobile Versione 1
log() Esegue l'operazione matematica standard in base $ e $ log(). Mobile Versione 1
log2() Simula un logaritmo in base-2. Questo valore viene calcolato dividendo la base-10 log() del valore di input) per il logaritmo in base-10 di 2 $. Mobile Versione 1
log10() Esegue l'operazione matematica standard in base 10 log() in base 10. Mobile Versione 1
sqrt() Esegue l'operazione matematica standard di sqrt(). Mobile Versione 1
cbrt() Esegue l'operazione matematica standard di cbrt(). Mobile Versione 1
exp() Esegue l'operazione matematica standard di exp(). Mobile Versione 1
expm1() Richiama direttamente l'operazione matematica expm1() se il valore di input è $ 1 $. Per qualsiasi altro valore di input, simula la funzione eseguendo l'operazione matematica standard exp(), quindi sottraendo 1. Mobile Versione 1
deg() Esegue l'operazione matematica standard di toDegrees(). $ \frac{\pi}{2} $ è definito come 90 gradi e $ \pi $ è definito come 180 gradi. Mobile Versione 1
rad() Esegue l'operazione matematica standard di toRadians(). 90 gradi sono definiti $ \frac{\pi}{2} $, mentre 180 gradi sono definiti $ \pi $. Mobile Versione 1
pow(,) Esegue l'operazione matematica standard di pow(). Il valore di output è sempre un numero in virgola mobile. Mobile Versione 1
numberFormat(,) Applica il formato numerico nel primo valore al secondo valore. Il primo valore può contenere i seguenti caratteri:
  • #: rappresenta una cifra numerica.
  • ,: rappresenta un separatore di virgole nei numeri grandi.
  • .: rappresenta un punto decimale.
Stringa Versione 1
icuText()

Converte la stringa del formato della data di input in un pattern corrispondente al formato delle impostazioni internazionali previsto. Se l'elemento PartText principale include un elemento Localization, viene utilizzato il formato di queste impostazioni internazionali. In caso contrario, verranno utilizzate le impostazioni internazionali attuali del dispositivo Wear OS.

Ad esempio, se il dispositivo viene utilizzato negli Stati Uniti, un valore di input EE, MMM d, yyyy h:mm a restituisce il seguente output: Tue, Mar 14, 2023 1:59 PM

Stringa Versione 1
icuText(,)

Converte il primo argomento stringa del formato della data di input in un pattern corrispondente al formato delle impostazioni internazionali previsto. Il secondo argomento è una stringa timestamp in millisecondi.

Se l'elemento PartText principale include un elemento Localization, viene utilizzato il formato di queste impostazioni internazionali. In caso contrario, verranno utilizzate le impostazioni internazionali attuali del dispositivo Wear OS.

Stringa Versione 2
icuBestText()

Converte la stringa del formato della data di input nell'ora corrente il cui modello corrisponde al formato previsto. Se l'elemento PartText principale include un elemento Localization, viene utilizzato il formato di queste impostazioni internazionali. In caso contrario, verranno utilizzate le impostazioni internazionali attuali del dispositivo Wear OS.

Ad esempio, se il dispositivo viene utilizzato negli Stati Uniti il 14 marzo 2023 alle 13:59, un valore di input yyyy MMM d EE a h:mm restituisce il seguente output: Tue, Mar 14, 2023, 1:59 PM

Stringa Versione 1
icuBestText(,)

Converte il primo argomento stringa del formato della data di input nell'ora corrente il cui modello corrisponde al formato previsto. Il secondo argomento è una stringa timestamp in millisecondi.

Se l'elemento PartText principale include un elemento Localization, viene utilizzato il formato di queste impostazioni internazionali. In caso contrario, verranno utilizzate le impostazioni internazionali attuali del dispositivo Wear OS.

Stringa Versione 2
subText(,,)

Estrae una sottostringa dal primo valore. Il secondo valore indica l'indice in base 0 nel primo valore in cui deve iniziare la sottostringa. Il terzo valore indica l'indice in base 0 nel primo valore in cui deve essere interrotta l'estrazione delle sottostringhe ("dal secondo valore fino al terzo valore escluso").

Esempi:
  • subText("abc def", 2, 5) è c d
  • subText("abc def", 2, 7) è c def
Stringa Versione 1
textLength()

Calcola la lunghezza della stringa di input.

Esempi:
  • subText("abc def", 2, 5) è c d
  • subText("abc def", 2, 7) è c def
Stringa Versione 1

Operatori

Watch Face Format riconosce i seguenti valori di stringa come operatori:

+
Più unario o aggiunta di più valori. Supporta sia numeri interi sia valori in virgola mobile.
-
Meno unitario o sottrazione di più valori. Supporta sia numeri interi sia valori in virgola mobile.
*
Moltiplicazione di più valori interi o in virgola mobile.
/

Divisione di 2 valori interi o in virgola mobile.

Se la divisione di 2 numeri interi genera un valore non intero, la parte decimale viene conservata nel risultato in virgola mobile. Ad esempio, $ \frac{1}{2} = 0.5 $.

Inoltre, l'espressione $ \frac{x}{0} $ viene valutata come 0, dove $ x $ è un numero intero qualsiasi.

%

Divisione modulare di due valori interi o in virgola mobile.

Se entrambi gli operandi sono numeri interi, il risultato è il resto della divisione dei 2 valori. Ad esempio, $ 19 \bmod 7 = 5 $.

Se almeno un operando è un numero in virgola mobile, il risultato è un equivalente in virgola mobile del resto, ad esempio: $ 19.0 \bmod 7 = 5,0 $.

~

Operatore "not" a livello di bit. Alcuni esempi:

  • ~1 costa -2 $
  • ~0 è -1 $
!

Operatore logico "not", che supporta i doppi negativi. Alcuni esempi:

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

Operatore "or" a livello di bit. Supporta più di 2 valori di input. Alcuni esempi:

  • 1 € | 0 = 1 €
  • 1 € | 2 | 4 = 7 €
||
Operatore logico "or".
&
Operatore "and" bit a bit. Supporta esattamente 2 valori di input.
&&
Operatore logico "AND".
(
Parentesi aperta. Utilizzato per cambiare l'ordine standard delle operazioni, in cui la moltiplicazione e la divisione hanno in genere la priorità sull'aggiunta e sulla sottrazione.
)
Parentesi chiusa. Utilizzato per cambiare l'ordine standard delle operazioni, in cui la moltiplicazione e la divisione hanno in genere la priorità sull'aggiunta e sulla sottrazione.
<
L'operatore di confronto "minore di". Quando confronti un valore intero con il suo equivalente in virgola mobile, il risultato è false.
<=
L'operatore di confronto "minore o uguale a". Quando confronti un valore intero con il suo equivalente in virgola mobile, il risultato è true.
>
L'operatore di confronto "maggiore di". Quando confronti un valore intero con il suo equivalente in virgola mobile, il risultato è false.
>=
L'operatore di confronto "maggiore di o uguale a". Quando confronti un valore intero con il suo equivalente in virgola mobile, il risultato è true.
? e :

Offre supporto per le operazioni ternarie. Il formato generale è il seguente:

condition ? value_if_true : value_if_false

Supporta le operazioni ternarie nidificate utilizzando le parentesi.

,

Separa i valori nelle funzioni che utilizzano più di un argomento.

"

Se posizionato all'inizio e alla fine di un valore, indica che il formato dei quadranti deve interpretare il valore come una stringa.

==

Confrontare per ottenere l'uguaglianza. Quando confronti un valore intero con il suo equivalente in virgola mobile, il risultato è true.

!=

Confrontare per valutare la disuguaglianza. Quando confronti un valore intero con il suo equivalente in virgola mobile, il risultato è false.