ABS ...
Publié : jeu. 08/nov./2012 14:26
Une petite commande pour avoir des valeurs absolues pour les entiers !!
Code : Tout sélectionner
Procedure.i Abso(Valeur)
Protected AbsVal
If valeur < 0
AbsVal = Val (RemoveString(Str(valeur),"-"))
Else
AbsVal = Valeur
EndIf
ProcedureReturn Absval
EndProcedure
a = 1250
b = -45322
c = -28
Debug Abso(a)
Debug Abso(b)
Debug Abso(c)
Code : Tout sélectionner
Debug Abs(-5) --> 5.0
Debug Int(Abs(-5)) --> 5
j'utilise tellement peu cette fonction que je l'avais zappé.Golfy a écrit :Pourquoi ne pas utiliser int() ?Code : Tout sélectionner
Debug Abs(-5) --> 5.0 Debug Int(Abs(-5)) --> 5
Heu....Ar-S a écrit :Code : Tout sélectionner
AbsVal = Val (RemoveString(Str(valeur),"-"))
Code : Tout sélectionner
AbsVal = -valeur
Aide de Purebasic a écrit :Si un entier est passé en argument et que sa valeur est grande une perte de précision sera constatée. Une autre fonction sera proposée au seul usage des valeurs entières.
C'est pas faux !graph100 a écrit :Aide de Purebasic a écrit :Si un entier est passé en argument et que sa valeur est grande une perte de précision sera constatée. Une autre fonction sera proposée au seul usage des valeurs entières.
Code : Tout sélectionner
Debug -9876543210123456789.9
Debug Abs(-9876543210123456789.9)
Debug Int(Abs(-9876543210123456789.9))
;
Debug -987654321012345678.9
Debug Abs(-987654321012345678.9)
Debug Int(Abs(-987654321012345678.9))
Code : Tout sélectionner
8570200863586095100.0
8570200863586095100.0
8570200863586095104
;
-987654321012345730.0
987654321012345730.0
987654321012345728
Code : Tout sélectionner
Valeur.q = -12
AbsValeur.q = Abs(Valeur)
Debug AbsValeur
Oui, c'est vrai j'ai poussé le bouchon un peu loingraph100 a écrit :bah tu as n'as pas utilisé des entiers !!!
Je t'invite à lire la doc concernant l'utilisation des nombres à virgules flottantes de précision simple et double
c'est dans les Thèmes généraux > Variables, Types et Opérateurs.
Code : Tout sélectionner
a.q = -987654321012345678.2
b.d = -987654321012345678.2
c.f = -987654321012345678.2
d.i = -987654321012345678
x.q = Abs(a.q)
y.q = Int(Abs(b.d))
z.f = Int(Abs(c.f))
d64 = Abs(d.i)
Debug x.q
Debug y.q
Debug z.f
Debug d64
Moi c'est ça qui m'a surprisGolfy a écrit :Code : Tout sélectionner
a.q = -987654321012345678.2
c'est pas un entier.-9876543210123456789.9
C'est des flottant simple précision partout.Aide de PB a écrit :Resultat.f = Abs(Nombre.f)
Code : Tout sélectionner
If nombre < 0 : res = -nombre : EndIf
C'est pas fauxgraph100 a écrit :Moi c'est ça qui m'a surprisGolfy a écrit :Code : Tout sélectionner
a.q = -987654321012345678.2
![]()
Tu mets un nombre à virgule dans un format entier, le quad.
fait toi une macro ou une procedure adaptée sur les variations deCode : Tout sélectionner
If nombre < 0 : res = -nombre : EndIf