Impossible de convertir implicitement le type 'double' en 'long'
Dans ce code j'ai l'erreur ci-dessus dans les lignes que j'ai commenté.
public double bigzarb(long u, long v)
{
double n;
long x;
long y;
long w;
long z;
string[] i = textBox7.Text.Split(',');
long[] nums = new long[i.Length];
for (int counter = 0; counter < i.Length; counter++)
{
nums[counter] = Convert.ToInt32(i[counter]);
}
u = nums[0];
int firstdigits = Convert.ToInt32(Math.Floor(Math.Log10(u) + 1));
v = nums[1];
int seconddigits = Convert.ToInt32(Math.Floor(Math.Log10(v) + 1));
if (firstdigits >= seconddigits)
{
n = firstdigits;
}
else
{
n = seconddigits;
}
if (u == 0 || v == 0)
{
MessageBox.Show("the Multiply is 0");
}
int intn = Convert.ToInt32(n);
if (intn <= 3)
{
long uv = u * v;
string struv = uv.ToString();
MessageBox.Show(struv);
return uv;
}
else
{
int m =Convert.ToInt32(Math.Floor(n / 2));
x = u % Math.Pow(10, m); //here
y = u / Math.Pow(10, m); //here
w = v % Math.Pow(10, m); //here
z = v / Math.Pow(10, m); //here
long result = bigzarb(x, w) * Math.Pow(10, m) + (bigzarb(x, w) + bigzarb(w, y)) * Math.Pow(10, m) + bigzarb(y, z);///here
textBox1.Text = result.ToString();
return result;
}
}
Est quoi le problème? Merci!
source d'informationauteur Arash
Vous devez vous connecter pour publier un commentaire.
La
Math.Pow
méthode retourne undouble
pas unlong
de sorte que vous aurez besoin de modifier votre code pour tenir compte de cela:Ce code permet de lancer le
double
résultat deMath.Pow
et affecter cette valeur àx
. Gardez à l'esprit que vous perdrez toute la précision providided pardecimal
(qui est une variable de type point et peuvent représenter des valeurs décimales). Casting pourlong
sera tronquée, de tout ce qui est après la virgule.Mathématiques.Pow renvoie un double.
la Droite (D) d' % ne peut être qu'un type entier.
vous avez besoin
En outre, Vous avez la possibilité de diviser par zéro et de détruire l'univers.
Mathématiques.Pow renvoie un double. Vous pourriez convertir explicitement à la longue, par exemple
bien que ce n'est probablement pas la bonne solution. Êtes-vous certains que les résultats que vous êtes après peut être correctement exprimée en double? Si pas alors de modifier les variables pour être déclaré en tant que double plutôt que de longs.
Modification des types
à
Ou de faire usage de
Vous ne pouvez pas " cast implicitement double de long, utilisez la (longue) fonte ou de changer le type de déclaration de variable double.
Aussi, vous pouvez utiliser ceci:
Source ici