|
problème de résultat apres calcul entre champ |
Débuté par Equilibrium, 20 mar. 2017 08:53 - 4 réponses |
| |
| | | |
|
| |
Membre enregistré 45 messages |
|
Posté le 20 mars 2017 - 08:53 |
Bonjour,
je développe une petite application toute simple pour m'aider a calculer mes salaires mais le résultat est étrange
j'ai créer plusieurs champs - taux horaire ou je test avec le chiffre 10.4645 - semaine travaillées que je test avec le chiffre 52 - heures semaine avec 35 donc je remplie ses champs et mon résultat est tristement faut 1587,12 voici le code utilisé
val1 est un entier = SAI_HS val2 est un entier = SAI_St SAI_htm = val1 * val2 /12 SAI_sdb = SAI_tauxHoraire * SAI_htm
alors que si je simule manuellement le contenu des champs j'obtiens le bon résultat qui est 1587.15 bien entendu je me suis dis que c'est un problème de masque, du coup j'ai tout testé mais non je suis près a parier que c'est une erreur de ma part tout simple sur un de mes champs mais je trouve pas
merci d'avanceMessage modifié, 20 mars 2017 - 08:55 |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 45 messages |
|
Posté le 20 mars 2017 - 08:54 |
pour info bien entendu que j'aurai normalement fait tout ca en une ligne de code mais j'ai tout séparer pour tester les différent résultat afin de trouver l'erreur |
| |
| |
| | | |
|
| | |
| |
Posté le 20 mars 2017 - 10:24 |
Bonjour
Votre problème se situe au niveau des arrondis. Si je fais le calcul tel que vous le montrez, j'obtiens bien 1587.11583333... ce qui fait bien en arrondi final 1587.12 Si vous voulez obtenir 1587.15, vous devez gérer vos arrondis. Votre code devient alors
SAI_htm = Arrondi(val1 * val2 /12,2) SAI_sdb = Arrondi(SAI_tauxHoraire * SAI_htm,2) Là vous obtiendrez comme résultat 1587.15
Bon dev.
Laurent M. |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 2 566 messages Popularité : +222 (260 votes) |
|
Posté le 20 mars 2017 - 10:52 |
Bonjour,
Il te manque un arrondi pour val2/12. Le calcul fait par Windev est bon et logique:
35*52/12 = 151,66666666666666666666666666667 151,66666666666666666666666666667 * 10.4645 = 1587,1158333333333333333333333333 soit 1587.12
Par contre
35*Arrondi(52/12,2) = 151.67 151.67*10.4645 = 1587,150715 soit 1587.15
Comme quoi quelques microns finissent par donner du décalage...
val1 est un entier = SAI_HS val2 est un entier = SAI_St SAI_htm = val1 * Arrondi(val2 /12,2) SAI_sdb = Arrondi(SAI_tauxHoraire * SAI_htm,2)
-- Cordialement,
Philippe SAINT-BERTIN Géode InformatiqueMessage modifié, 20 mars 2017 - 10:54 |
| |
| |
| | | |
|
| | |
| |
Posté le 20 mars 2017 - 12:23 |
Bonjour
déjà faire des calculs dans des champs est une mauvaise idée
Déclare des variables de type numérique haute précision, fais tes calculs dedans PUIS afecte ton résultat dans ce que tu veux
Cordialement
-- Fabrice Harari Consultant WinDev, WebDev et WinDev Mobile International
A votre disposition : WXShowroom.com, WXReplication (open source) et maintenant WXEDM (open source)
Plus d'information sur http://fabriceharari.com
Le 3/20/2017 à 4:52 AM, Philippe SB a écrit :
Bonjour, Il te manque un arrondi pour val2/12. Le calcul fait par Windev est bon et logique: 35*52/12 = 151,66666666666666666666666666667 151,66666666666666666666666666667 * 10.4645 = 1587,1158333333333333333333333333 soit 1587.12 Par contre 35*Arrondi(52/12,2) = 151.67 151.67*10.4645 = 1587,150715 soit 1587.15 Comme quoi quelques microns finissent par donner du décalage... val1 est un entier = SAI_HS val2 est un entier = SAI_St SAI_htm = val1 * Arrondi(val2 /12,2) SAI_sdb = Arrondi(SAI_tauxHoraire * SAI_htm,2) -- Cordialement, Philippe SAINT-BERTIN Géode Informatique |
| |
| |
| | | |
|
| | | | |
| | |
|