Syntaxe
Resultat.f = Abs(Nombre.f)
Description
Renvoie la valeur absolue (non signée) de la valeur flottante spécifiée. Cette fonction ne peut être utilisée correctement qu'avec des nombres flottants. 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.
http://purebasic.developpez.com/
Je ne réponds à aucune question technique en PV, utilisez le forum, il est fait pour ça, et la réponse peut profiter à tous.
Procedure.q ABS_I(Valeur.q)
If valeur<0
temp$=Str(valeur) ; transforme un entier en string
tmp$=Right(temp$,Len(temp$)-1) ; on enlève le signe - qui est le premier caractère
;tmp$=RemoveString(temp$, "-")
ProcedureReturn Val(tmp$) ; retransformation en entier ;ValQ(tmp$) est obsolète !?
Else
ProcedureReturn Valeur
EndIf
EndProcedure
Procedure.q ABS_I2(Valeur.q) ; plus rapide ?
If valeur<0
temp.q=~valeur +1 ; complément à 2 = inversion de bit avec NOT "~" + 1
ProcedureReturn temp
Else
ProcedureReturn Valeur
EndIf
EndProcedure
;Entier.q = ABS_I(-100000000000000001)
Entier.q = ABS_I2(-892)
Debug Entier