Zwei lange Dezimalzahlen werden so addiert, wie man dies aus Grundschulzeiten noch kennen wird.

Z1 =

Z2 =

 







C# - Code:


  private string addiere2Strings(string s1, string s2)
  {
      if (s1 == "") s1 = "0";
      if (s2 == "") s2 = "0";
      string e = "";

      // s1 soll ggf. der längere String sein
      if (s1.Length < s2.Length) { string sh = s1; s1 = s2; s2 = sh; }

      int übertrag = 0, zif1=0, zif2=0, neuzif=0;

      int i = s1.Length - 1;
      int j = s2.Length - 1; // es gilt: j <= j

      bool ok = true;
      for (int k=0;k<=j;k++)
      {
          char c1 = s1[i-k];
          char c2 = s2[j-k];
          try { zif1 = Convert.ToInt16(" " + c1); zif2 = Convert.ToInt16(" " + c2); }
          catch { zif1 = 0; zif2 = 0; e = "FEHLER"; ok = false; }
          if (ok)
          {
              int sum = zif1 + zif2 + übertrag;
              neuzif = sum % 10;
              übertrag = sum / 10;
              e = neuzif.ToString() + e;
          }
      }

      zif2 = 0;
      if (i>j)
          for (int k = j+1; k <= i; k++)
          {
              char c1 = s1[i - k];
              try { zif1 = Convert.ToInt16(" " + c1); } catch { zif1 = 0; e = "FEHLER"; ok = false; }
              if (ok)
              {
                  int sum = zif1 + zif2 + übertrag;
                  neuzif = sum % 10;
                  übertrag = sum / 10;
                  e = neuzif.ToString() + e;
              }
          }


      if (übertrag > 0) { e = übertrag.ToString() + e; }

      return e;
  }