Arondire un nombre suivent le mode souhaiter
Publié : mer. 13/avr./2011 12:33
Bonjour !
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:
Mais à partir du mode 11, je n’y arrive plus
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
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