Les formules
Chaque mode de calcul a un identifiant stable et une version de formule. Toutes les pages utilisent le même moteur ; aucune page ne fait ses propres calculs.
| Mode | Calcul | Formule |
|---|---|---|
| M1 | Pourcentage d’un nombre | R = V × p ÷ 100 |
| M2 | Part en pourcentage | p = A ÷ B × 100 |
| M3 | Évolution | t = (VA − VD) ÷ |VD| × 100 |
| M4 | Hausse ou remise | R = V × (1 ± p ÷ 100) |
| M5 | Valeur de départ | VD = VA ÷ (1 ± p ÷ 100) |
| M6 | Total | B = A × 100 ÷ p |
| M7 | Évolutions successives | T = (Π(1 + tᵢ ÷ 100) − 1) × 100 |
| M8 | Écart en points | points = r₂ − r₁ |
| Pente | Pente et angle | p = d ÷ h × 100 ; angle = arctan(d ÷ h) |
Conventions de calcul et d’affichage
- Arithmétique exacte. Additions, soustractions, multiplications et divisions sont faites en nombres décimaux exacts, jamais en virgule flottante. Une division qui ne tombe pas juste est poursuivie sur 40 décimales.
- Arrondi au plus proche, demi vers l’extérieur. 1,005 s’arrondit à 1,01 et −1,005 à −1,01. Un résultat arrondi est précédé de « ≈ » ; sa valeur exacte, jusqu’à 10 décimales, figure dans « Détail du calcul ».
- Décimales par défaut. Pourcentages et montants : 2 décimales au plus, zéros inutiles retirés. Montant saisi en euros : toujours 2 décimales, sans « ≈ » pour un arrondi au centime. Résultat compris entre 0 et 1 : 4 chiffres significatifs. Le réglage « Décimales » ne change que l’affichage.
- Jamais de zéro trompeur. Un résultat non nul qui s’arrondirait à 0 garde ses chiffres significatifs ou passe en notation scientifique ; « −0 » n’est jamais affiché.
- Valeur de départ négative. Le taux d’évolution principal divise par la valeur absolue de départ, pour que le signe suive le sens de l’écart. Le taux algébrique des manuels, (VA − VD) ÷ VD, est affiché à côté.
- Lecture des nombres. Virgule ou point décimal ; espaces, apostrophes ou points pour les milliers. Si la virgule et le point apparaissent, le dernier est le séparateur décimal. Un seul point suivi de trois chiffres (1.234) est lu comme une décimale, avec la relecture « Lu : 1,234 ». Les expressions comme 2+3 sont refusées dans les champs : la saisie intelligente est faite pour cela.
- Cas non définis. Division par une référence nulle, baisse de plus de 100 %, valeurs incompatibles : la calculatrice l’explique et n’affiche jamais un 0 inventé.
Les cas de test publics
Ces 76 cas couvrent les 8 modes, la pente, la lecture des nombres, l’affichage, l’arrondi et la saisie intelligente. Ils tournent à chaque modification du code ; la page refuse de se publier si l’un d’eux échoue.
Le bouton exécute les cas dans votre navigateur, avec le même moteur que la calculatrice.
| N° | Cas | Entrée | Attendu | Navigateur |
|---|---|---|---|---|
| 1 | M1 | 15 % de 240 | 36 | — |
| 2 | M1 | 12,5 % de 80 | 10 | — |
| 3 | M1 | 7 % de 0,1 | 0,007 | — |
| 4 | M1 | 150 % de 40 | 60 | — |
| 5 | M1 | −20 % de 80 | −16 | — |
| 6 | M1 + € | 50 % de 2,01 € | 1,01 € | — |
| 7 | M2 | 18 sur 24 | 75 % | — |
| 8 | M2 | 14 sur 32 | 43,75 % | — |
| 9 | M2 | 1 sur 3 | ≈ 33,33 % | — |
| 10 | M2 | 2 sur 3 | ≈ 66,67 % | — |
| 11 | M2 | 5 · 0 | non défini : Impossible de diviser par une valeur de référence égale à 0. | — |
| 12 | M3 | De 120 à 150 | +25 % | — |
| 13 | M3 | De 100 à 80 | −20 % | — |
| 14 | M3 | De 6 000 à 4 500 | −25 % | — |
| 15 | M3 | De 153 à 187 | ≈ +22,22 % | — |
| 16 | M3 | 0 · 50 | non défini : Le taux d’évolution n’est pas défini à partir de 0. L’écart est de +50. | — |
| 17 | M3 | De 20 % à 25 % | +25 % | — |
| 18 | M3 | De 89,99 à 62,99 | ≈ −30 % | — |
| 19 | M4 | 150 − 20 % | 120 | — |
| 20 | M4 | 89,99 € − 30 % | 62,99 € | — |
| 21 | M4 | 83,19 € − 21 % | 65,72 € | — |
| 22 | M4 | 2 100 + 3,5 % | 2 173,5 | — |
| 23 | M4 | 50 · 120 (baisse) | refusé : Une réduction supérieure à 100 % donnerait un montant négatif. | — |
| 24 | M5 | Après une baisse de 20 %, on obtient 120. Valeur de départ | 150 | — |
| 25 | M5 | Après une baisse de 30 %, on obtient 84. Valeur de départ | 120 | — |
| 26 | M5 | Après une hausse de 20 %, on obtient 99,99 €. Valeur de départ | 83,33 € | — |
| 27 | M5 | 100 · 50 (baisse) | incompatible : Ces valeurs sont incompatibles : une baisse de 100 % donne toujours 0. | — |
| 28 | M6 | 45 représente 15 % de | 300 | — |
| 29 | M6 | 217 représente 62 % de | 350 | — |
| 30 | M6 | 45 · 0 | incompatible : Ces valeurs sont incompatibles : 0 % d’un total vaut toujours 0. | — |
| 31 | M7 | +10 % puis +10 % | +21 % | — |
| 32 | M7 | −20 % puis +20 % | −4 % | — |
| 33 | M7 | −30 % puis −20 % | −44 % | — |
| 34 | M7 | +5 %, 3 fois | ≈ +15,76 % | — |
| 35 | M7 | 50, +20 % puis −20 % | 48 | — |
| 36 | M7 | +2 %, 5 fois | ≈ +10,41 % | — |
| 37 | parse | « 1 234,5 » | lu 1 234,5 | — |
| 38 | parse | « 1.234,5 » | lu 1 234,5 | — |
| 39 | parse | « 1'234.50 » | lu 1 234,5 | — |
| 40 | parse | « 12.5 » | lu 12,5 | — |
| 41 | parse | « 1.234 » | lu 1,234 (« Lu : 1,234 ») | — |
| 42 | parse | « −12,5 % » | lu −12,5 | — |
| 43 | format | 1234567,891 | 1 234 567,89 | — |
| 44 | smart | « 15 % de 240 » | M1 → 36 | — |
| 45 | smart | « 120 -> 150 » | M3 → +25 % | — |
| 46 | smart | « 150 − 20 % » | M4 → 120 | — |
| 47 | smart | « 18 sur 24 » | M2 → 75 % | — |
| 48 | smart | « 45 = 15 % de ? » | M6 → 300 | — |
| 49 | smart | « -30% puis -20% » | M7 → −44 % | — |
| 50 | smart | « 120 après une remise de 20 % » | M5 → 150 | — |
| 51 | pente | 12 m de dénivelé sur 100 m | 12 % | — |
| 52 | pente | 45° | 100 % | — |
| 53 | M1 | 0 % de 150 | 0 | — |
| 54 | M1 | 0,00000001 % de 1 | 1 × 10⁻¹⁰ | — |
| 55 | M1 | 12,5 % de 1 234,56 | 154,32 | — |
| 56 | M2 | 150 sur 100 | 150 % | — |
| 57 | M2 | 0 sur 100 | 0 % | — |
| 58 | M2 | 0 · 0 | non défini : 0 sur 0 ne définit pas un pourcentage. | — |
| 59 | M3 | De 100 à 100 | 0 % | — |
| 60 | M3 | De 100 à 0 | −100 % | — |
| 61 | M3 | 0 · 0 | non défini : Le taux d’évolution n’est pas défini à partir de 0. L’écart est de 0. | — |
| 62 | M3 | De −100 à −50 | +50 % | — |
| 63 | M5 | 100 · 0 (baisse) | non défini : Après une baisse de 100 %, toutes les valeurs de départ donnent 0 : impossible de la retrouver. | — |
| 64 | M5 | 100 · 80 (baisse) | incompatible : Ces valeurs sont incompatibles : une baisse de 100 % donne toujours 0. | — |
| 65 | M6 | 0 · 0 | non défini : N’importe quel total convient : le total ne peut pas être déterminé. | — |
| 66 | M7 | 200, −20 % puis −10 % | 144 | — |
| 67 | M7 | 100, −100 % puis +50 % | 0 | — |
| 68 | M8 | De 20 % à 25 % | +5 points | — |
| 69 | M8 | De 0 % à 5 % | +5 points | — |
| 70 | M8 | De 7 % à 7,5 % | +0,5 point | — |
| 71 | rounding | −1,005 à 2 décimales | −1,01 | — |
| 72 | rounding | −0,004 à 2 décimales | 0 | — |
| 73 | parse | « 12 34 » | refusé : Séparateur de milliers mal placé. Exemple : 1 234,56 | — |
| 74 | parse | « 2+3 » | refusé : Saisissez un nombre, par ex. 12,5 | — |
| 75 | property | 1 000 tirages aléatoires | valeur de départ affichée × coefficient = valeur obtenue, à l’arrondi près | — |
| 76 | property | 1 000 tirages aléatoires, sur chaque préréglage des pages | même résultat que sur la calculatrice principale | — |
Ce que les tests prouvent, et ce qu’ils ne prouvent pas
Les tests montrent que, pour ces entrées précises, le moteur produit exactement l’affichage attendu, calculé à la main ou avec une autre méthode. Deux tests de propriété, rejoués eux aussi dans votre navigateur, vérifient 1 000 cas tirés au hasard chacun : la valeur de départ affichée, multipliée par le coefficient, redonne la valeur obtenue à l’arrondi près ; et chaque page spécialisée donne exactement le même résultat que la calculatrice principale. Un troisième test, lancé à chaque modification du code, vérifie qu’un nombre affiché puis relu redonne le même nombre.
Ils ne prouvent pas l’absence de toute erreur : ce sont des vérifications internes, pas une certification. Ils ne disent rien non plus sur le choix du calcul : la calculatrice applique le taux et la base que vous saisissez, sans savoir quel taux de TVA, quel prix de référence ou quel salaire s’applique à votre situation.
Les exemples des pages viennent d’un jeu de données vérifié deux fois : par le moteur, et par un calcul indépendant en Python. Une différence bloque la publication.
Journal des modifications
- Version 0.2.3, 17 octobre 2026 : un lien de calcul incomplet ou contenant une valeur illisible est refusé avec un message, au lieu d’être complété par les valeurs de l’exemple ; dans les étapes, une valeur arrondie est précédée de « ≈ », jamais de « = », et le total se calcule à partir de la division exacte.
- Version 0.2.2, 17 octobre 2026 : la saisie intelligente comprend les formes faciles à taper au clavier, sans flèche (« de a à b », « de a a b », « a vers b », « a > b ») et les mots écrits sans accent ; nouvelle palette de couleurs, bleu canard et safran sur fond crème, en clair comme en sombre.
- Version 0.2.1, 17 octobre 2026 : une saisie dans les champs l’emporte toujours sur une phrase de la saisie intelligente encore en attente, et la phrase disparaît dès que le calcul affiché ne lui correspond plus ; l’explication pour retrouver une valeur avant une hausse dit « en retirant » ; un montant arrondi au centime l’indique sous le résultat, avec sa valeur exacte ; cibles tactiles agrandies ; la préversion n’affiche plus d’adresse de contact ni de nom de domaine non validés.
- Version 0.2.0, 17 octobre 2026 : vérifications toujours exactes, ou signalées par « ≈ » quand la valeur affichée est arrondie ; une seule convention pour une valeur de départ négative, le taux algébrique des manuels donné à côté ; une saisie comme « entre a et b » propose les deux lectures possibles (part ou évolution) ; sur téléphone, champs larges et libellés visibles ; le lien de partage s’affiche avant d’être copié ; « Effacer » peut être annulé ; les tests de propriété se rejouent dans le navigateur.
- Version 0.1.0, 17 octobre 2026 : première version. Huit modes, outil de pente, générateur de formules Excel, 76 cas de test publics.
Signaler une erreur
Un résultat vous paraît faux ? Signalez-le. Vos nombres ne sont jamais joints automatiquement : collez-les dans votre message si vous le souhaitez.