c# – 不能将类型“double”隐式转换为“long”

c# – 不能将类型“double”隐式转换为“long”,第1张

概述在这段代码中,我发现上面的错误在我评论的行. 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.Len 在这段代码中,我发现上面的错误在我评论的行.
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”所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1260268.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-08
下一篇 2022-06-08

发表评论

登录后才能评论

评论列表(0条)

保存