【问题标题】:Changing a big number to a small normalized number将大数更改为小的标准化数
【发布时间】:2012-04-18 10:46:44
【问题描述】:

这是我的代码 -

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 不足以处理这么大的数字。

【问题讨论】:

    标签: c# .net c#-4.0 c#-3.0


    【解决方案1】:

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

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

    它给出的 s 为“75898331000” 因此,您正在尝试创建一个溢出的 int(32 位)。 尝试将 norm 改为 Int64。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-09-04
      • 2017-10-02
      • 2010-11-24
      • 2016-02-16
      • 1970-01-01
      相关资源
      最近更新 更多