Radix100.cs: Remove special case for large exponents. Can be handled normally.
authorMichael Welch <michaelgwelch@gmail.com>
Wed, 10 Jan 2007 04:34:19 +0000 (04:34 +0000)
committerMichael Welch <michaelgwelch@gmail.com>
Wed, 10 Jan 2007 04:34:19 +0000 (04:34 +0000)
Program.cs:
Initialize strings to Empty string. This seems to mimic the TI Basic approach. Alternatively we could add null checks before each use of a string and set it to String.Empty if it is null. This is easier.

TiBasicRuntime/Radix100.cs
mbasic/Program.cs

index c7fac9b..cec5a4e 100644 (file)
@@ -288,14 +288,6 @@ namespace TiBasicRuntime
             else
             {
                 int exponent = GetExponent(this);
-                if (Math.Abs(exponent) >= 50)
-                {
-                    double mantissa = GetMantissa10(this);
-                    if (mantissa < 0 && exponent < 0) return String.Format("{0:0.#####}E-**", mantissa);
-                    else if (mantissa < 0) return String.Format("{0:0.#####}E+**", mantissa);
-                    else if (exponent > 0) return String.Format("{0:0.#####}E+**", mantissa);
-                    else return String.Format("{0:0.#####}E-**", mantissa);
-                }
                 if (exponent < -4 || exponent > 5) return ToScientificForm();
                 return ToNormalDecimalForm();
                 
@@ -362,7 +354,8 @@ namespace TiBasicRuntime
             }
 
             bldr.Append("E");
-            bldr.Append(decimalExponent.ToString("+00;-00"));
+            if (decimalExponent > 99) bldr.Append(decimalExponent.ToString("+**;-**"));
+            else bldr.Append(decimalExponent.ToString("+00;-00"));
             return bldr.ToString();
 
         }
index 66c3952..f7c69fa 100644 (file)
@@ -103,6 +103,19 @@ namespace mbasic
             n.CheckTypes();
             n.RecordLabels(gen);
 
+            #region Initialize strings to String.Empty
+
+            foreach (LocalBuilder local in locals)
+            {
+                if (local.LocalType == typeof(string))
+                {
+                    gen.Emit(OpCodes.Ldstr, String.Empty);
+                    gen.Emit(OpCodes.Stloc, local);
+                }
+            }
+
+            #endregion Intialize strings
+
             #region Create Static DATA data
             if (data.Count > 0)
             {