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; }}
有什么问题?谢谢!
解决方法 Math.Pow方法返回一个double,而不是一个long,所以你需要改变你的代码来解决这个问题:x = (long)(u % Math.Pow(10,m));
该代码将从Math.Pow投射双重结果,并将该值分配给x.请记住,您将丢失由十进制提供的所有精度(这是一个浮点型,可以表示十进制值).铸造长时间会截断小数点后的所有内容.
总结以上是内存溢出为你收集整理的c# – 不能将类型“double”隐式转换为“long”全部内容,希望文章能够帮你解决c# – 不能将类型“double”隐式转换为“long”所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)