Accueil PalmAttitude.org Forums Dossiers Tests Logiciels Comparateur matériel Liens Association


Programmation : Conversion numérique notation ''ingénieur'' en notation décimale 1 arrondie

2002-11-11 17:22:58 - Contribution de wicked - Transmis par PeekEpic

Je n'ai pas la prétention de dire que cet article est d'un haut niveau ou quoique ce soit.
Je n'ai pas eu d'autre choix que ce développement car parfois trop rechercher fait perdre plus de temps que de développer soi-même.

Quoiqu'il en soit, je souhaite juste avoir un avis sur ce code source et bien sûr (et ça j'en suis sûr ;) il doît y avoir d'autres moyens!!Avant tout, insérez un objet "Alert" dans les ressources (dans CodeWarrior, avec ^1, ^2 et ^3 en message et Info en nom).

Ensuite placez ce code, par exemple dans l'évènement frmOpenEvent de la fonction callback d'une fenêtre (celle par défaut).

Il y a peut-être des améliorations à faire (si quelqu'un, par hasard, en aurait besoin ;) -

bye... attaquons le code!!

//(c) WickedDev- for PeekPocket. 7 Nov 2002. 

char szS[16]; Char s[64]; 
Err ferr; FlpCompDouble aF; FlpCompDouble bF; FlpCompDouble sF; FlpCompDouble lF; float c; 
FlpCompDouble x; char szR[16]; int i=0; 
char szP10[16]; int iszP=0; int iP10; 
char szRF[16]; int j,k; 

//Conversion (ex : 9.77411e01->97.7) 
//Ne fonctionne que pour exposants e00 et e01 (désolé!!) 

static void ConvertXYZeABXtoXY.Z() 
{ 
 x.d= 54/3; //exemple seulement! 
 x.d = (rint(1000*x.d))/10; 
 
 ferr=FlpFToA(x.fd,s); 
 
 i=0; 
 while ( (s[i]!='e') ) 
 { 
  szR[i]=s[i]; 
  i++; 
 } 

 szR[i]=0; 

 i++; //bypasser le 'e' 
 iszP=0; 
 while ( s[i]!=0 ) 
 { 
  szP10[iszP]=s[i]; 
  i++; iszP++; 
 } 

 szP10[iszP]=0; 
 iP10 = StrAToI(szP10); 
 StrIToA(szP10, iP10); 
 
 switch(iP10) 
 { 
  case 0: 
   j=0; k=0; 
   while ( szR[j]!='.' ) 
   { 
    szRF[k]=szR[j]; 
    k++; j++; 
   } 
   j++; //bypasser le '.' 
   szRF[k]='.'; 
   k++; 
   szRF[k]=szR[j]; 
   k++; 
   szRF[k]=0; 
   break; 

  case 1: 
   j=0; k=0; 
   while (szR[j]!='.') 
   { 
    szRF[k]=szR[j]; 
    j++; k++; 
   } 

   j++; // bypasser le '.' 
   szRF[k]=szR[j]; 
   j++; k++; 
   szRF[k]='.'; 
   k++; 
   szRF[k]=szR[j]; 
   k++; 
   szRF[k]=0; 
   break; 

default: 
   break; 
} 
char szMess[32]="Valeur convertie = "; 
StrCat(szMess, szRF); 
FrmCustomAlert(InfoAlert, szMess, " ", " "); 
}