Comme je ne savais pas trop quoi faire, j'ai eu l'idée de crée une fonction
pour arrondir un nombre suivent le mode choisie:
Code : Tout sélectionner
#Non_Arondi = 0
#Arondi_Entier = 1
#Arondi_Auto = 2
#Arondi_Bas = 3
#Arondi_Haut = 4
#Arondi_Dizaine_Auto = 5
#Arondi_Dizaine_Haut = 6
#Arondi_Dizaine_Bas = 7
#Arondi_Paire_Auto = 8
#Arondi_Paire_Haut = 9
#Arondi_Paire_Bas = 10
#Arondi_Impaire_Auto = 11
#Arondi_Impaire_Haut = 12
#Arondi_Impaire_Bas = 13
Procedure.l CountNombre(Multiple, Totale.f)
ProcedureReturn Int(Totale/Multiple)
EndProcedure
Procedure.f ArondiNombre(Nombre.f, Multiple, Mode)
If Multiple = 0
Multiple = 1
EndIf
If Mode = 1
Nombre = Int(Nombre)
ElseIf Mode = 2
Nombre = Round(Nombre, #PB_Round_Nearest)
ElseIf Mode = 3
Nombre = Round(Nombre, #PB_Round_Down)
ElseIf Mode = 4
Nombre = Round(Nombre, #PB_Round_Up)
ElseIf Mode = 5
CountNombre = CountNombre(10, Nombre.f)
Reste.f = Nombre.f - CountNombre * 10
If Reste.f >= 5
Nombre = CountNombre * 10 + 10
Else
Nombre = CountNombre * 10
EndIf
ElseIf Mode = 6
CountNombre = CountNombre(10, Nombre.f)
Reste.f = Nombre.f - CountNombre * 10
Nombre = CountNombre * 10 + 10
ElseIf Mode = 7
CountNombre = CountNombre(10, Nombre.f)
Reste.f = Nombre.f - CountNombre * 10
Nombre = CountNombre * 10
ElseIf Mode = 8
CountNombre = CountNombre(2, Nombre.f)
Reste.f = Nombre.f - CountNombre * 2
If Reste > 0.5
Nombre = 2 * CountNombre + 2
Else
Nombre = 2 * CountNombre
EndIf
ElseIf Mode = 9
CountNombre = CountNombre(2, Nombre.f)
Reste.f = Nombre.f - CountNombre * 2
If Reste > 0
Nombre = 2 * CountNombre + 2
Else
Nombre = 2 * CountNombre
EndIf
ElseIf Mode = 10
CountNombre = CountNombre(2, Nombre.f)
Nombre = 2 * CountNombre
ElseIf Mode = 11
CountNombre = CountNombre(3, Nombre.f)
Reste.f = Nombre.f - CountNombre * 3
Debug Reste
If Nombre.f > 1 And Nombre.f < 3
If Nombre.f < 3
If Nombre.f > 2
Nombre.f = 3
Else
Nombre.f = 1
EndIf
ElseIf Nombre.f >= 3
If Reste > 0
If Reste <= 1
Nombre = 3 * CountNombre
Else
Nombre = 3 * CountNombre + 2
EndIf
Else
Nombre = 3 * CountNombre
EndIf
Else
Nombre.f = 3
EndIf
ElseIf Nombre.f >= 0
Nombre.f = 1
EndIf
ElseIf Mode = 12
CountNombre = CountNombre(3, Nombre.f)
Reste.f = Nombre.f - CountNombre * 2
ElseIf Mode = 13
CountNombre = CountNombre(3, Nombre.f)
Reste.f = Nombre.f - CountNombre * 2
EndIf
ProcedureReturn Nombre
EndProcedure
NombreArondi.f = ArondiNombre(7, 4, 11)
Debug NombreArondi
; IDE Options = PureBasic 4.60 Beta 1 (Windows - x86)
; CursorPosition = 99
; FirstLine = 84
; Folding = -
; EnableXP
; EnableUser
; EnableOnError
; EnableCompileCount = 356
; EnableBuildCount = 0
; EnableExeConstant
En faite je voudrais une fonction qui
Arrondisse nombre suivent les modes que je veux :
#Non_Arondi = 0
#Arondi_Entier = 1
#Arondi_Auto = 2
#Arondi_Bas = 3
#Arondi_Haut = 4
#Arondi_Dizaine_Auto = 5
#Arondi_Dizaine_Haut = 6
#Arondi_Dizaine_Bas = 7
#Arondi_Paire_Auto = 8
#Arondi_Paire_Haut = 9
#Arondi_Paire_Bas = 10
#Arondi_Impaire_Auto = 11
#Arondi_Impaire_Haut = 12
#Arondi_Impaire_Bas = 13
Enfin bref je me complique certainement comme d’habitude quoi