La perte de précision décimale est un autre bogue radioactif. Bien que moins fréquente que les erreurs d'arrondi, elle peut avoir des conséquences bien plus graves. En effet, alors qu'une erreur d'arrondi n'affecte que le dernier chiffre significatif d'une zone de résultat, la précision décimale peut affecter tous les chiffres
La perte de précision décimale
à droite de la virgule.
Pour contrôler la perte de précision, voyons comment le compilateur RPG IV traduit des expressions arithmétiques en code exécutable. Le compilateur divise une expression complexe en une suite d’expressions simples. Chaque expression simple se voit attribuer sa propre zone de résultat intermédiaire. Le compilateur sait que le résultat d’une multiplication peut être supérieur au multiplicande ou au multiplicateur. Par conséquent, le compilateur essaie d’utiliser une zone de résultat intermédiaire qui contient le plus grand produit de multiplication possible. Les zones numériques en RPG sont limitées à 30 chiffres. S’il le doit, le compilateur utilisera les 39 chiffres pour la partie entière d’un nombre, au détriment de sa partie décimale. Quand le compilateur prend une telle décision et abandonne la partie décimale d’un nombre, il y a perte de précision.
On peut éviter la perte de précision décimale de deux manières. Pour une opération Eval isolée, on peut définir l’extension d’opération de positions décimales du résultat (R) :
C Eval(HR) PrfPc = (RtlAmt – CstAmt) /
C RtlAmt * 100
Ou bien, pour préserver la précision décimale de toutes les expressions arithmétiques d’un programme, on peut définir les positions décimales de résultat sur le mot-clé ExprOpts (expression options) sur une définition de contrôle :
H ExprOpts( *ResDecPos )
Notons que les deux techniques peuvent entraîner la perte des données d’ordre supérieur, c’est-à -dire situées à gauche de la zone. Quand on définit les positions décimales de résultat, le compilateur RPG IV préserve les positions décimales dans les zones de travail au détriment de la portion entière des zones.
Téléchargez cette ressource
Guide de Cyber-résilience pour Microsoft 365
La violation de votre tenant M365 va au-delà d’un simple incident de cybersécurité. Elle peut entraîner une interruption opérationnelle généralisée, des perturbations commerciales et une exposition de vos données sensibles. Découvrez les méthodes et technologies pour évaluer, comparer et renforcer votre posture de sécurité Microsoft 365.
Les articles les plus consultés
Les plus consultés sur iTPro.fr
- Tendances 2026 : l’IA devra prouver sa rentabilité
- L’identité numérique : clé de voûte de la résilience et de la performance en 2026
- CES 2026 : l’IA physique et la robotique redéfinissent le futur
- Les 6 tournants qui redéfinissent l’IA en entreprise
Articles les + lus
CES 2026 : l’IA physique et la robotique redéfinissent le futur
Les 3 prédictions 2026 pour Java
Semi-conducteurs : comment l’Irlande veut contribuer à atténuer la pénurie mondiale de puces
Face à l’urgence écologique, l’IT doit faire sa révolution
D’ici 2030, jusqu’à 90 % du code pourrait être écrit par l’IA, pour les jeunes développeurs, l’aventure ne fait que commencer
À la une de la chaîne Tech
- CES 2026 : l’IA physique et la robotique redéfinissent le futur
- Les 3 prédictions 2026 pour Java
- Semi-conducteurs : comment l’Irlande veut contribuer à atténuer la pénurie mondiale de puces
- Face à l’urgence écologique, l’IT doit faire sa révolution
- D’ici 2030, jusqu’à 90 % du code pourrait être écrit par l’IA, pour les jeunes développeurs, l’aventure ne fait que commencer
