日期:2014-05-17  浏览次数:20933 次

string类型转换成double类型进行相减运算后,再转换成string类型,结果小数点后多了很多位。
这是代码。比如label2显示的是543544.59 label3显示的是469643.02,结果label3显示的是 70901.5699999999999,为什么,该怎么改能让label3显示70901.57呢?

if (Label2.Text != "" && Label3.Text != "")
  {
  this.Label1.Text = Convert.ToString(Convert.ToDouble(this.Label2.Text) - Convert.ToDouble(this.Label3.Text));
  }
  else if (Label3.Text == "" && Label2.Text != "")
  {
  this.Label1.Text = Convert.ToString(Convert.ToDouble(this.Label2.Text) - 0);
  }
  else if (Label2.Text == "" && Label3.Text != "")
  {
  this.Label1.Text = Convert.ToString(0 - Convert.ToDouble(this.Label3.Text));
  }
  else if (Label2.Text == "" && Label3.Text == "")
  {
  this.Label1.Text ="0";
  }

------解决方案--------------------
C# code
string.Format("{0:#.00}", 70901.5699999999999);

------解决方案--------------------
用double.ToString效果也和Format差不多但更简洁,

double data=70901.5699999999999;

Label3.Text =data.ToString("f2");

就可以显示70901.57
------解决方案--------------------
double txtDb = 70901.5699999999999;
label3.Text = txtDb.ToString("F2");