0

这是我的代码 -

private void button1_Click(object sender, EventArgs e)
    {

        double number =Convert.ToDouble( textBox1.Text);
        string s = (Math.Round(number, 3)*1000).ToString();

        int norm=1;
        for(int i=0;i<=s.Length-1;i++)
        {
            norm*=10;
        }
        label1.Text =Math.Round((Convert.ToDouble(s)/norm),3).ToString() ;

    }

这实际上应该将 21234,34532 到 2,123 或 75898331 到 7,589(理论上)等数字。当我尝试 75898331 时,它给了我一个意想不到的结果(24.328)。谁能告诉我我在哪里搞砸了?Double 不足以处理如此大的数字。

4

1 回答 1

0

不,它没有。当我尝试相同时,

double number = Convert.ToDouble("75898331");
string s = (Math.Round(number, 3) * 1000).ToString();

它给 s 作为“75898331000”所以你试图创建一个溢出的 int(32 位)。尝试制作norm一个 Int64 代替。

于 2012-04-18T10:49:15.780 回答