c# – 不能将类型“double”隐式转换为“long”
发布时间:2020-12-15 06:55:43 所属栏目:百科 来源:网络整理
导读:在这段代码中,我发现上面的错误在我评论的行. 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; cou
在这段代码中,我发现上面的错误在我评论的行.
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.请记住,您将丢失由十进制提供的所有精度(这是一个浮点型,可以表示十进制值).铸造长时间会截断小数点后的所有内容. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |