Autoit [Résolu] Autoit & Calculs

Sparkdaemon

Staff
Membre du personnel
Inscrit
7 Avril 2009
Messages
556
Reactions
3
#1
Bonjour a tous, Je vous expose un problème auquel je fais actuellement face.

Je suis en train de coder une caisse enregistreuse assez basique.


Tout va bien jusque là. elle fonctionne bien et est rapide dans ses calculs, Aucun souci.
J'ai ajouté la fonction "Supprimer un évènement (Ou ticket)" qui fonctionne bien, Mais qui retourne certaines fois un nombre incohérent.

1.4-1.4=-4.44089209850063e-016
Ce résultat arrive seulement si:
- Le dernier item supprimé a la même valeur que le Total du chiffre d'affaire (Donc, chaque fois)
- L'un des items supprimés avait un ID inférieur a l'item supprimé précédemment
- Plus de 3 items étaient présent dans la ListBox avant la première suppression


Logs d'ajout/Suppression des Items.
Code:
> 0.70€ added. Temp total: 0.7€
> 0.50€ added. Temp total: 1.2€
> 0.20€ added. Temp total: 1.4€
!> 0.20: Café / Thé
!> 0.50: Barres Ch.
!> 0.70: Boisson
!> 1.4€ added. New amount: 1.4€
!> 1.4€ added in Total
> 0.20€ added. Temp total: 0.2€
> 0.50€ added. Temp total: 0.7€
> 0.70€ added. Temp total: 1.4€
!> 0.20: Café / Thé
!> 0.50: Barres Ch.
!> 0.70: Boisson
!> 1.4€ added. New amount: 2.8€
!> 1.4€ added in Total
> 0.20€ added. Temp total: 0.2€
> 0.70€ added. Temp total: 0.9€
> 0.70€ added. Temp total: 1.6€
!> 0.20: Café / Thé
!> 0.70: Boisson
!> 0.70: Boisson
!> 1.6€ added. New amount: 4.4€
!> 1.6€ added in Total
> 0.50€ added. Temp total: 0.5€
> 0.70€ added. Temp total: 1.2€
> 0.20€ added. Temp total: 1.4€
!> 0.20: Café / Thé
!> 0.50: Barres Ch.
!> 0.70: Boisson
!> 1.4€ added. New amount: 5.8€
!> 1.4€ added in Total
!> Deleting: 2
>> Calculating: 5.8-1.6=4.2
!> Deleting: 1
>> Calculating: 4.2-1.4=2.8
!> Deleting: 0
>> Calculating: 2.8-1.4=1.4
!> Deleting: 0
>> Calculating: 1.4-1.4=-4.44089209850063e-016

Mon calcul est fait comme ceci:
Code:
Func Calc($a, $b, $operator)
	ConsoleWrite(">> Calculating: " & $a & $operator & $b & "=")
	If $operator = "+" Then
		$return = ($a + $b)
	ElseIf $operator = "-" Then
		$return = ($a - $b)
	ElseIf $operator = "/" Then
		$return = ($a / $b)
	ElseIf $operator = "*" Then
		$return = ($a * $b)
	EndIf
	ConsoleWrite($return & @CRLF)
	Return $return
EndFunc   ;==>Calc

Je crois a une blague satanistes orchestrée par les loutres sanguinaires du Mordor dans le but de me rendre fou.

Des idées?
 
Haut Bas