Convert.ToSingle()然后System.Convert.ToString()是否会导致Double输入的计

本文关键字:Convert Double 输入 是否 ToSingle 然后 System ToString | 更新日期: 2023-09-27 18:26:53

我知道标题不够清楚,让我解释一下。我正在做一个关于计算大地坐标的迭代算法的项目,这是它的第一部分。基本上,这个程序使用文本框输入进行一些迭代计算。它将文本框输入转换为Single,用于计算,然后转换为String作为输出。在某些情况下,我需要使用输出作为以下过程的输入,但问题是,它给出的结果略有不同。例如,这些是x,y,z的在线计算器的结果:1114125.84474949,-4844708.42056692,3982826.71498173;这些是矿山1114125.55452963、4844708.5526556、3982826.75245773。是什么原因造成的?(别介意少了y的减号)。总之,我想知道将文本框文本转换为single,然后将它们转换为string是否会导致此错误。我希望问题是清楚的。

这是给出我上面提到的结果的代码的一部分。如果我能解决这个问题,更复杂的迭代也会像这样工作。

private void button1_Click_1(object sender, EventArgs e)
    {
        this.timer1.Start(); // it's beside the point
        double fi = Convert.ToSingle(phi.Text);
        double lamda = Convert.ToSingle(lambda.Text);//lamda is input, lambda is textbox
        double yuk = Convert.ToSingle(height.Text);
        double a = Convert.ToSingle(aa.Text);
        double b = Convert.ToSingle(bb.Text);
        double ec = (Math.Pow(a, 2) - Math.Pow(b, 2)) / Math.Pow(a, 2); //eccentricity
        double N = a / Math.Sqrt(1 - ec * Math.Pow(Math.Sin((Math.PI / 180) * fi), 2));
        double xx = ((N + yuk) * Math.Cos((Math.PI / 180) * fi) * Math.Cos((Math.PI / 180) * lamda));
        double yy = ((N + yuk) * Math.Cos((Math.PI / 180) * fi) * Math.Sin((Math.PI / 180) * lamda));
        double zz = ((Math.Pow(b/a,2) * N + yuk) * Math.Sin((Math.PI / 180) * fi));
        coorx.Text = System.Convert.ToString(xx); //xx, yy, zz are textboxes
        coory.Text = System.Convert.ToString(yy);
        coorz.Text = System.Convert.ToString(zz);
    }

Convert.ToSingle()然后System.Convert.ToString()是否会导致Double输入的计

计算机使用二进制格式在内存中存储数字,此外,用于存储这些值的位数有限(取决于使用的类型),因此,字符串值的转换通常与精度下降有关,字符串值是以十进制数格式给出的,并且是单/双类型(因此实数)。