将大数字更改为小的标准化数字

时间:2012-04-18 10:46:45

标签: c# .net c#-4.0 c#-3.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并不足以与这么大的数字一起工作。

1 个答案:

答案 0 :(得分:0)

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

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

它给了s为“75898331000” 所以你试图创建一个溢出的int(32位)。 请尝试将norm改为Int64。