ABS ...
Re: ABS ...
Un truc comme ça ?
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)
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Re: ABS ...
Pourquoi ne pas utiliser int() ?
Code : Tout sélectionner
Debug Abs(-5) --> 5.0
Debug Int(Abs(-5)) --> 5
Purebasic 5.30 full sous Windows XP (x86) et Win7 (64 bits), Linux Debian. Orientation réseaux, domotique
http://golfy.olympe.in/Teo-Tea/
http://golfy.olympe.in/Teo-Tea/
Re: ABS ...
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
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
- Mindphazer
- Messages : 639
- Inscription : mer. 24/août/2005 10:42
Re: ABS ...
Heu....Ar-S a écrit :Code : Tout sélectionner
AbsVal = Val (RemoveString(Str(valeur),"-"))
Code : Tout sélectionner
AbsVal = -valeur
Bureau : Win10 64bits
Maison : Macbook Pro M1 14" SSD 512 Go / Ram 16 Go - iPad Pro 32 Go (pour madame) - iPhone 15 Pro Max 256 Go
Maison : Macbook Pro M1 14" SSD 512 Go / Ram 16 Go - iPad Pro 32 Go (pour madame) - iPhone 15 Pro Max 256 Go
Re: ABS ...
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.
_________________________________________________
Mon site : CeriseCode (Attention Chantier perpétuel )
Mon site : CeriseCode (Attention Chantier perpétuel )
Re: ABS ...
Certes
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Re: ABS ...
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
Purebasic 5.30 full sous Windows XP (x86) et Win7 (64 bits), Linux Debian. Orientation réseaux, domotique
http://golfy.olympe.in/Teo-Tea/
http://golfy.olympe.in/Teo-Tea/
Re: ABS ...
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.
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.
_________________________________________________
Mon site : CeriseCode (Attention Chantier perpétuel )
Mon site : CeriseCode (Attention Chantier perpétuel )
-
- Messages : 4312
- Inscription : mer. 28/janv./2004 20:58
- Localisation : Clermont ferrand OU Olsztyn
- Contact :
Re: ABS ...
et tout simplement
Parce que un Int() c'est lent. A utiliser que si nécessaire
Code : Tout sélectionner
Valeur.q = -12
AbsValeur.q = Abs(Valeur)
Debug AbsValeur
Je ne suis pas à moitié Polonais mais ma moitié est polonaise ... Vous avez suivi ?
[Intel quad core Q9400 2.66mhz, ATI 4870, 4Go Ram, XP (x86) / 7 (x64)]
[Intel quad core Q9400 2.66mhz, ATI 4870, 4Go Ram, XP (x86) / 7 (x64)]
Re: ABS ...
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.
Et même si je suis en 64 bits (mes int sont donc sur 8 oct.) j'ai dépassé la valeur (en gros, 19 chiffres).
Pour l'URL, pour la page des variables, j'y passe plusieurs fois par semaine (car j'oublie les différences entre .a, .c par exemple et pleins d'autres problèmes comme .d <> .f ou quels sont les signé et non-signés)
je reste cependant sur ma fin avec le code suivant :
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
Edit : bien sur, je suis dysléxique en agencement de commande !!!
y.q = Abs(Int(b.d)) marche parfaitement si je veux un entier
Purebasic 5.30 full sous Windows XP (x86) et Win7 (64 bits), Linux Debian. Orientation réseaux, domotique
http://golfy.olympe.in/Teo-Tea/
http://golfy.olympe.in/Teo-Tea/
Re: ABS ...
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.
et plus haut c'est même pire ! Tu as utilisé l'auto-assignation de pb pour tes variables
c'est pas un entier.-9876543210123456789.9
Mais il me semble que la doc encadre le sujet. A moins que la fonction ne marche pas exactement comme l'aide le dis.
C'est des flottant simple précision partout.Aide de PB a écrit :Resultat.f = Abs(Nombre.f)
fait toi une macro ou une procedure adaptée sur les variations de
Code : Tout sélectionner
If nombre < 0 : res = -nombre : EndIf
_________________________________________________
Mon site : CeriseCode (Attention Chantier perpétuel )
Mon site : CeriseCode (Attention Chantier perpétuel )
Re: ABS ...
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
Je retombe dans ce vieux travers de GFA basiciens : je m'attendais à ce que Purebasic tronque la valeur décimale automatiquement
Tu as entièrement ( ) raison : si je choisis un type, ce n'est pas pour y mettre autre chose
Purebasic 5.30 full sous Windows XP (x86) et Win7 (64 bits), Linux Debian. Orientation réseaux, domotique
http://golfy.olympe.in/Teo-Tea/
http://golfy.olympe.in/Teo-Tea/
Re: ABS ...
je pense qu'effectivement PB fait la conversion lorsque tu assignes un type à ta variable. (et c'est une troncature dans le cas que tu as utilisé, mais j'ralais pour le principe )
Mais quand tu ne précises le type, il me semble qu'il utilise un long par défaut
Mais quand tu ne précises le type, il me semble qu'il utilise un long par défaut
_________________________________________________
Mon site : CeriseCode (Attention Chantier perpétuel )
Mon site : CeriseCode (Attention Chantier perpétuel )