Re-bonjour,

Je viens d'éffectuer de nouveaux essais...

Voici *mon code en C* :
---
void main(void)
{
   long *pA ;
   long A[11] ;
   float *pB ;
   int i ;
   A[0] = 0x40000000L ;  // 2.0
   A[1] = 0x40D00000L ;  // 6.5
   A[2] = 0xC0D00000L ; // -6.5
   A[3] = 1 ; // 2^-149 = 1.40129e-45
   A[4] = 0 ; // +0
   A[5] = 0x80000000L ; // -0
A[6] = 0x7FC00001L ; // NaN ; avec 0x7F800001L l'affichage provoque un plantage A[7] = 0xFFC00000L ; // -NaN ; avec 0xFF800001L l'affichage provoque un plantage
   A[8] = 0x7F800000L ; // +Infini
   A[9] = 0xFF800000L ; // -Infini
   A[10] = 0x7F7FFFFFL ; // 2^127 * (2-2^-23) = 3,40282e+38
   clrscr() ;
   for(i=0 ; i<11 ; i++)
   {
      pA = A+i ;
      pB = (float*)pA ;
      printf("%2d **%g**\n", i, *pB) ;
   }
   getch() ;
}
---
Il fonctionne comme je l'attends, les nombres sont bien représentés selon la norme ANSI/IEEE754. Malgré cela, en C, je suis incapable de faire des calculs jusqu'à 1.40129e-45...



Bien sûr, j'ai essayé de transformer *mon code pour OOo-Basic*...
Mais je ne sais pas faire...
---
Sub TestFloat
   Dim A(0 to 10) As Variant
   Dim B As Single
   Dim i As Integer
   A(0) = &H40000000  ' 2.0
   A(1) = &H40D00000  ' 6.5
   A(2) = &HC0D00000 ' -6.5
   A(3) = 1 ' 2^-149 = 1.40129e-45
   A(4) = 0 ' +0
   A(5) = &H80000000 ' -0
   A(6) = &H7FC00000 ' NaN  ; avec 0x7F800001L
   A(7) = &HFFC00000 ' -NaN ; avec 0xFF800001L
   A(8) = &H7F800000 ' +Infini
   A(9) = &HFF800000 ' -Infini
   A(10) = &H7F7FFFFF ' 2^127 * (2-2^-23) = 3,40282e+38

   For i=0 To 10 Step 1
      B=A(i)
        ' OOo-Basic convertit l'entier en réel... ce n'est pas ce que
        ' je cherche !!! Je voudrais qu'il copie bit à bit les 32 bits
        ' de mon entier pour afficher la valeur en tant que Single...
      print "A["&(i)&"] : ", A(i), "**", B, "**"
   Next
End Sub

--
Pierre
Utilisateur d'OpenOffice.org, Thunderbird, Firefox, Nvu,...
--
Vive la liberté !
Merci à tous les contributeurs des projets libres.


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Répondre à