Section courante

A propos

Section administrative du site

En AWK, il n'existe aucune fonction «ABS» permettant de calculer la valeur absolue d'un nombre. Pour remédier à se problème, il suffit de créer une fonction ressemblant à ceci :

  1. function abs(a) {
  2.    if(a<0) a=-a;
  3.    return a;
  4. } 

Voici un exemple montrant une utilisation de la valeur absolue avec des parenthèses :

  1. #! /bin/sh
  2.  
  3. BEGIN {
  4.  print "Abs(9*(-7))=" abs(9*(-7));
  5.  exit;
  6. }
  7.  
  8. function abs(a) {
  9.    if(a<0) a=-a;
  10.    return a;
  11. } 

on obtiendra le résultat suivant :

Abs(9*(-7))=63

Voici un exemple montrant une utilisation plus classique de la valeur absolue :

  1. #! /bin/sh
  2.  
  3. BEGIN {
  4.  print "Abs(1)=" abs(1);
  5.  print "Abs(-1)=" abs(-1);
  6.  print "Abs(30.2)=" abs(30.2);
  7.  print "Abs(-35.4)=" abs(-35.4); 
  8.  exit;
  9. }
  10.  
  11. function abs(a) {
  12.    if(a<0) a=-a;
  13.    return a;
  14. } 

on obtiendra le résultat suivant :

Abs(1)=1
Abs(-1)=1
Abs(30.2)=30.2
Abs(-35.4)=35.4

Voici un exemple montrant la différence de résultats avec la fonction «SGN» :

  1. #! /bin/sh
  2.  
  3. BEGIN {
  4.  print "abs(1)=" abs(1) ", sgn(1)=" sgn(1);
  5.  print "abs(-1)=" abs(-1) ", sgn(-1)=" sgn(-1);
  6.  print "abs(0)=" abs(0) ", sgn(0)=" sgn(0);
  7.  print "abs(5)=" abs(5) ", sgn(5)=" sgn(5);
  8.  print "abs(10)=" abs(10) ", sgn(10)=" sgn(10);
  9.  print "abs(-17)=" abs(-17) ", sgn(-17)=" sgn(-17);
  10.  print "abs(27.4)=" abs(27.4) ", sgn(27.4)=" sgn(27.4);
  11.  print "abs(-12.13)=" abs(-12.13) ", sgn(-12.13)=" sgn(-12.13); 
  12.  exit;
  13. }
  14.  
  15. function abs(a) {
  16.    if(a<0) a=-a;
  17.    return a;
  18. }
  19.  
  20. function sgn(valeur) {
  21.  if(valeur < 0) return-1; else 
  22.  if(valeur = 0) return 0;
  23.  return 1;
  24. }

on obtiendra le résultat suivant :

abs(1)= 1, sgn(1)= 1
abs(-1)= 1, sgn(-1)=-1
abs(0)= 0, sgn(0)= 0
abs(5)= 5, sgn(5)= 1
abs(10)= 10, sgn(10)= 1
abs(-17)= 17, sgn(-17)=-1
abs(27.4)= 27.4, sgn(27.4)= 1
abs(-12.13)= 12.13, sgn(-12.13)=-1

Voici un exemple montrant comment effectuer une comparaison avec Abs :

  1. #! /bin/sh
  2.  
  3. BEGIN {
  4.  A = -10;
  5.  B = 6;
  6.  if(abs(A) > abs(B)) print "|a| > |b|";
  7.  if(abs(A) == abs(B)) print "|a| = |b|";
  8.  if(abs(A) < abs(B)) print "|a| < |b|"; 
  9.  exit;
  10. }
  11.  
  12. function abs(a) {
  13.    if(a<0) a=-a;
  14.    return a;
  15. } 

on obtiendra le résultat suivant :

|a| > |b|

Voici un exemple montrant comment calculer la distance entre deux nombres à l'aide de la fonction Abs :

  1. #! /bin/sh
  2.  
  3. BEGIN {
  4.  print "La distance entre -8 et 10 = " abs(-8 - 10);
  5.  print "La distance entre 4 et 8 = " abs(4 - 8);
  6.  print "La distance entre 0 et 5 = " abs(0 - 5);
  7.  print "La distance entre -100 et 100 = " abs(-100 - 100); 
  8.  exit;
  9. }
  10.  
  11. function abs(a) {
  12.    if(a<0) a=-a;
  13.    return a;
  14. } 

on obtiendra le résultat suivant :

La distance entre -8 et 10 = 18
La distance entre 4 et 8 = 4
La distance entre 0 et 5 = 5
La distance entre -100 et 100 = 200


Dernière mise à jour : Dimanche, le 12 mars 2006