Allons droit au but. J'ai créé le code suivant pour multiplier deux nombres et il "mange" mes zéros ! Il semble fonctionner correctement dans les cas où le produit (p) n'est pas égal à zéro. Dans le cas de l'exemple, il imprime simplement "5" au lieu de "500". Je serais vraiment reconnaissant si quelqu'un pouvait m'expliquer ce qui se passe :)
using System;
class Program
{
static void Main()
{
Console.WriteLine(smallNumBigNumProduct("5", "100"));
}
static string smallNumBigNumProduct(string s, string b)
{
int l = s.Length;
int f = int.Parse(s); // factor
int c = 0; // carry
string r = ""; // result
int p; // product
while(l-- > 0)
{
p = (Convert.ToInt32(b[l]) - 48) * f;
p += c;
if (p > 9)
{
r = Convert.ToString(p % 10) + r;
c = p / 10;
}
else
r = Convert.ToString(p) + r;
}
if (c > 0)
{
r = Convert.ToString(c) + r;
}
return r;
}
}