Unités
Pour fiabiliser les calculs et faciliter leur compréhension, on peut préciser l’unité d’un nombre :
Loading editor...
prix d'un repas: 10 €/repas nombre de repas: 5 repas prix total: nombre de repas * prix d'un repas
Le calcul est inchangé mais on a indiqué que le “prix d’un repas” s’exprime en €/repas
et que le “nombre de repas” est un nombre de repas
. L’unité du prix
total est inférée automatiquement comme étant en €
. (€/repas
* repas
= €
)
Ce système d’unité permet de typer les formules de calcul et de rejeter automatiquement des formules incohérentes :
Loading editor...
prix d'un repas: 10 €/repas nombre de repas: 5 repas frais de réservation: 1 €/repas prix total: nombre de repas * prix d'un repas + frais de réservation
- Avertissement ➡️ Dans la règle "prix total" ⚠️ Dans l'expression '+', la partie gauche (unité: €) n'est pas compatible avec la partie droite (unité: €/repas) ℹ️ [ EngineError ] ✖️ Impossible de convertir l'unité '€/repas' en '€'
Dans l’exemple ci-dessus, Publicodes détecte une erreur car les termes de
l’addition ont des unités incompatibles : d’un côté on a des €
et de l’autre
des €/repas
.
Cette incohérence d’unité témoigne d’une erreur de logique. Ici, une manière de corriger l’erreur peut être de factoriser la variable “nombre de repas” dans la formule du “prix total”.
Loading editor...
prix d'un repas: 10 €/repas nombre de repas: 5 repas frais de réservation: 1 €/repas prix total: nombre de repas * (prix d'un repas + frais de réservation)
Conversion d’unités
Publicodes convertit automatiquement les unités si besoin.
Loading editor...
salaire: 1500 €/mois prime faible salaire applicable: salaire < 20 k€/an
On peut forcer la conversion des unités via le mécanisme unité
.
Loading editor...
salaire: 2500 €/mois salaire annuel: valeur: salaire unité: €/an
Unités de base disponibles pour la conversion
jour
/mois
/trimestre
/an
€
/k€
g
/kg
/mg
km
/m
/cm
/mm
Si vous souhaitez en ajouter d’autres, n’hésitez pas à proposer une pull request (voir le code source concerné).
Puissances
Il est possible d’utiliser des puissances dans les unités. Pour cela, on ajoute l’exposant à la fin de l’unité.
Loading editor...
accélération: 9.81 m/s2
Publicodes simplifie automatiquement les unités avec exposants.
Loading editor...
vitesse après 3 secondes: 9.81 m/s2 * 3s
%
Pourcentage Il est possible de préciser un pourcentage comme unité. Un pourcentage est une unité “neutre”, sans dimension, qui exprime un rapport entre deux valeurs.
Un pourcentage peut être converti en valeur numérique sans unité.
Loading editor...
taux de TVA: valeur: 20% unité: ''
Opérations sur les pourcentages
L’addition d’un nombre et d’un pourcentage revient à ajouter le pourcentage à ce nombre. De même pour la soustraction.
Loading editor...
prix TTC: 10€ + 20%
En revanche, le résultat de l’addition de deux pourcentages est bien la somme des deux nombres :
Loading editor...
réduction: 2.4% + 5.0%
Pourcentage combiné à une unité
Il est possible de combiner un pourcentage à une unité.
Loading editor...
taxe: 2.4%/voitures
En revanche, dans ce cas, les opérations + et - se comporteront comme pour les unités classiques, et des erreurs seront levées si les unités ne sont pas compatibles.
Loading editor...
valeur: 4 voitures + 2.4%/voitures
- Avertissement ➡️ Dans la règle "valeur" ⚠️ Dans l'expression '+', la partie gauche (unité: voitures) n'est pas compatible avec la partie droite (unité: %/voitures) ℹ️ [ EngineError ] ✖️ Impossible de convertir l'unité '%/voitures' en 'voitures'