patch from GvG, it fixing the bug for calc = when it showing e-309, Bug 1195, it...
[reactos.git] / reactos / lib / crt / stdio / vfprintf.c
index e470a18..bf76e82 100644 (file)
@@ -210,11 +210,21 @@ static int numberf(FILE * f, double __n, char exp_sign,  int size, int precision
        } n;
 
        n.__n = &__n;
+    if ( exp_sign == L'g' || exp_sign == L'G' || exp_sign == L'e' || exp_sign == L'E' ) 
+    {
+        if ( 0 == n.n->mantissal && 0 == n.n->mantissah && 0 == n.n->exponent )
+        {
+            ie = 0;
+        }
+        else
+        {
+            ie = ((unsigned int)n.n->exponent - (unsigned int)0x3ff);
+        }
+
+        exponent = ie/3.321928;
+    }
 
-       if ( exp_sign == 'g' || exp_sign == 'G' || exp_sign == 'e' || exp_sign == 'E' ) {
-               ie = ((unsigned int)n.n->exponent - (unsigned int)0x3ff);
-               exponent = ie/3.321928;
-       }
 
        if ( exp_sign == 'g' || exp_sign == 'G' ) {
                type |= ZEROTRUNC;