Cannot implicitly convert type 'double' to 'long'

c#, double, long-integer

Solution

The `Math.Pow` method returns a `double`, not a `long` so you will need to change your code to account for this:

x = (long)(u % Math.Pow(10, m));

This code will cast the `double` result from `Math.Pow` and assign that value to `x`. Keep in mind that you will lose all the precision providided by `decimal` (which is a floating-point type and can represent decimal values). Casting to `long` will truncate everything after the decimal point.

Problem

In this code i got the above error in lines i commented. ``` 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; } } ``` Whats is the problem? Thanks!

Original source