Unités

Pour fiabiliser les calculs et faciliter leur compréhension, on peut préciser l’unité d’un nombre :

Exemple avec unité

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'