这是我的代码 -
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并不足以与这么大的数字一起工作。
答案 0 :(得分:0)
不,没有。当我尝试相同的时候,
double number = Convert.ToDouble("75898331");
string s = (Math.Round(number, 3) * 1000).ToString();
它给了s为“75898331000”
所以你试图创建一个溢出的int(32位)。
请尝试将norm
改为Int64。