patch from GvG, it fixing the bug for calc = when it showing e-309, Bug 1195, it have even affected python  and other apps trying writing out 0 as text string.
Modified: trunk/reactos/lib/crt/stdio/vfprintf.c
Modified: trunk/reactos/lib/crt/stdio/vfwprint.c

Modified: trunk/reactos/lib/crt/stdio/vfprintf.c
--- trunk/reactos/lib/crt/stdio/vfprintf.c	2006-01-05 22:24:28 UTC (rev 20593)
+++ trunk/reactos/lib/crt/stdio/vfprintf.c	2006-01-05 22:54:30 UTC (rev 20594)
@@ -210,12 +210,22 @@
 	} 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);
+        }
 
-	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;
-	}
+        exponent = ie/3.321928;
+    }
 
+
 	if ( exp_sign == 'g' || exp_sign == 'G' ) {
 		type |= ZEROTRUNC;
 		if ( exponent < -4 || fabs(exponent) >= precision )

Modified: trunk/reactos/lib/crt/stdio/vfwprint.c
--- trunk/reactos/lib/crt/stdio/vfwprint.c	2006-01-05 22:24:28 UTC (rev 20593)
+++ trunk/reactos/lib/crt/stdio/vfwprint.c	2006-01-05 22:54:30 UTC (rev 20594)
@@ -209,12 +209,22 @@
 	} 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);
+        }
 
-	if ( exp_sign == L'g' || exp_sign == L'G' || exp_sign == L'e' || exp_sign == L'E' ) {
-		ie = ((unsigned int)n.n->exponent - (unsigned int)0x3ff);
-		exponent = ie/3.321928;
-	}
+        exponent = ie/3.321928;
+    }
 
+
 	if ( exp_sign == L'g' || exp_sign == L'G' ) {
 		type |= ZEROTRUNC;
 		if ( exponent < -4 || fabs(exponent) >= precision )