Accueil de Gladir.com Notes légales de Gladir.com Flux RSS des nouvelles du site Gladir.com - AWK - Valeur absolue (ABS) Section du logiciel DOS «MonsterBook» Inventaire de la bibliothèque de Gladir.com Entrée administrateur

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: Samedi, le 25 février 2012