Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2963 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  [php]les float !!

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[php]les float !!

n°409295
deff
Monde de merde
Posté le 27-05-2003 à 15:20:52  profilanswer
 

Bonjour,
Comment transformer un 2 word ou un double word en float??
merci pour vos lumières.


---------------
-->>C'est l'histoire d'un gars qui rêve qu'il mange de la guimauve.Il se réveille et il a plus d'oreiller.<<--
mood
Publicité
Posté le 27-05-2003 à 15:20:52  profilanswer
 

n°409620
nero27
Posté le 27-05-2003 à 17:26:37  profilanswer
 

deff a écrit :

Bonjour,
Comment transformer un 2 word ou un double word en float??
merci pour vos lumières.
 


J'ai pas tout compris, mais si tu parles de cast, tu peux faire ça :
 

Code :
  1. $var=(float)$var;


ou

Code :
  1. settype($var,"float" );

n°409930
deff
Monde de merde
Posté le 28-05-2003 à 09:01:39  profilanswer
 

en fait la valeur en hexa par exemple 16#42C9178D, donne en entier signé : 1120475021. Par contre en float (ou réels) elle donne : 100.546 .
Donc j'aimerai savoir si il existe un fonction php pour convertir
une valeur soit hexadécimale, soit entière, soit sous forme binaire (genre une string '0101010101....') en float.
voila. Je sais c'est dur comme question.  :cry:


---------------
-->>C'est l'histoire d'un gars qui rêve qu'il mange de la guimauve.Il se réveille et il a plus d'oreiller.<<--
n°409936
deff
Monde de merde
Posté le 28-05-2003 à 09:15:41  profilanswer
 

par exemple en java il y a : intBitsToFloat


---------------
-->>C'est l'histoire d'un gars qui rêve qu'il mange de la guimauve.Il se réveille et il a plus d'oreiller.<<--
n°414066
deff
Monde de merde
Posté le 03-06-2003 à 10:48:55  profilanswer
 

bon j'en ai chi@#! mais je crois que j'ai réussi, mais il y a peut être des améliorations à faire.
 
voici les fonctions pour convertir un dword signé en float :
 

Code :
  1. function DWSign2NonSign($decsign){
  2.          if ($decsign<0) {
  3.             $decsign=4294967296-($decsign*-1);
  4.   $decimal=$decsign;
  5.       }
  6.          else {
  7.              $decimal=$decsign;
  8.          }
  9.          return $decimal;
  10.     }


 

Code :
  1. function DWordToFloat($dword){
  2. if ($dword<0){
  3.  $dword=$this->DWSign2NonSign($dword);
  4.  $binstring=$this->Dec2Bin($dword,32);
  5.  $exposant=substr($binstring,1,8);
  6.  $exposant=bindec($exposant)-127;
  7.  $mantisse="1.".substr($binstring,9,32);
  8.  $valeur="1".substr($mantisse,2,$exposant);
  9.  $entier=bindec($valeur);
  10.  $decimale=substr($mantisse,$exposant+2,27);
  11.  for ($i=0;$i<strlen($decimale);$i++){
  12.   $denominateur=(pow(2,$i+1));
  13.   $nominateur=substr($decimale,$i,1);
  14.   $temp=(float)($temp+($nominateur/$denominateur));
  15.  }
  16.  $decimale=$temp;
  17.  $valeur=($entier+$decimale)*-1;
  18.  return $valeur;
  19. }
  20. else {
  21.  $dword=$this->DWSign2NonSign($dword);
  22.  $binstring=$this->Dec2Bin($dword,32);
  23.  $exposant=substr($binstring,1,8);
  24.  $exposant=bindec($exposant)-127;
  25.  $mantisse="1.".substr($binstring,9,32);
  26.  $valeur="1".substr($mantisse,2,$exposant);
  27.  $entier=bindec($valeur);
  28.  $decimale=substr($mantisse,$exposant+2,27);
  29.  for ($i=0;$i<strlen($decimale);$i++){
  30.   $denominateur=(pow(2,$i+1));
  31.   $nominateur=substr($decimale,$i,1);
  32.   $temp=$temp+($nominateur/$denominateur);
  33.  }
  34.  $decimale=$temp;
  35.  $valeur=($entier+$decimale)*1;
  36.  return $valeur;
  37.  }
  38. }


 

Code :
  1. function FloatToDword($float){
  2. if ($float<0){
  3.  $float=$float*-1;
  4.  $entier=decbin(floor($float));
  5.  $temp=($float-floor($float));
  6.  for($i=0;$i<(23-strlen($entier));$i++){
  7.   $temp=$temp*2;
  8.   if($temp>=1){
  9.    $decimale=$decimale."1";
  10.    }
  11.   else{
  12.    $decimale=$decimale."0";
  13.    }
  14.   $temp=$temp-floor($temp);
  15.  }
  16.  $exposant=strlen($entier)-1+127;
  17.  $exposant=decbin($exposant);
  18.  $mantisse=substr($entier,1,strlen($entier)).$decimale;
  19.  for ($i=0;$i<(23-strlen($mantisse));$i++){
  20.  $mantisse=$mantisse."0";
  21.  }
  22.  $binstring="1".$exposant.$mantisse;
  23.  $valeur=bindec($binstring);
  24.  return $valeur;
  25. }
  26. else {
  27.  $entier=decbin(floor($float));
  28.  $temp=($float-floor($float));
  29.  for($i=0;$i<(23-strlen($entier));$i++){
  30.   $temp=$temp*2;
  31.   if($temp>=1){
  32.    $decimale=$decimale."1";
  33.    }
  34.   else{
  35.    $decimale=$decimale."0";
  36.    }
  37.   $temp=$temp-floor($temp);
  38.  }
  39.  $exposant=strlen($entier)-1+127;
  40.  $exposant=decbin($exposant);
  41.  $mantisse=substr($entier,1,strlen($entier)).$decimale;
  42.  for ($i=0;$i<(23-strlen($mantisse));$i++){
  43.  $mantisse=$mantisse."0";
  44.  }
  45.  $binstring="0".$exposant.$mantisse;
  46.  $valeur=bindec($binstring);
  47.  return $valeur;
  48.  }
  49. }


 
si ça intéresse quelqu'un!!?? :??:


---------------
-->>C'est l'histoire d'un gars qui rêve qu'il mange de la guimauve.Il se réveille et il a plus d'oreiller.<<--

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  [php]les float !!

 

Sujets relatifs
Comment fait ton pour avoir un float négatif???Convertir un float en string en C++
[Windows] qui transforme un Float en une chaine de char[QT] Conversion float/QString
Gestion des float : "," et "."Entre les double et les float...
[perl] limiter le nombre de chiffre d'un float ?Problème de conversion de float en int
[java]float -> codage et normeheu float
Plus de sujets relatifs à : [php]les float !!


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR