-1

这是任何 Web 服务接收到的 XML,

 <diy>
      <tag1>14</tag1>
      <tag2>2.000000000000000e+000</tag2>
      <tag3>2.800000000000000e+001</tag3>
 </diy>

这是代码:

IEnumerable<XElement> xTag = from p in xmlDoc.Elements("document").Elements("xServ").Elements("b")
                                                 select p;
            string tab = "<Table>";


            foreach (var xTags in xTag)
            {
                tab += "<tr><td>" + Convert.ToString(xTags.Element("r").Element("Exp").Value) + "</td>";
                tab += "<td>" + Convert.ToString(xTags.Element("r").Element("diy").Element("tag1").Value) + "</td>";
                string s = Convert.ToString(xTags.Element("r").Element("diy").Element("tag2").Value);
                string d = Math.Round(Convert.ToDouble(s)).ToString();
                tab += "<td>" + d + "</td>";
                tab += "<td>" + Convert.ToString(xTags.Element("r").Element("diy").Element("tag3").Value) + "</td>";
                tab += "</tr>";

            }
            divTag.InnerHtml = tab + "</Table>";

当我使用 Math.Round() 时,它给了我 "2,8E+16" !

如何在 ASP.NET 中将“2.000000000000000e+000”转换为“2”和“2.800000000000000e+001”转换为“28”?

4

4 回答 4

2

使用Math库:

Math.Round(Convert.ToDouble("2.800000000000000e+001")).ToString();

这将返回 "28" 。

于 2013-06-07T07:25:09.723 回答
2

这个怎么样:

decimal.Parse("2.800000000000000e+001", System.Globalization.NumberStyles.Float).ToString("0.#");

编辑:添加 .NET 格式字符串以减少到“28”

于 2013-06-07T07:46:34.277 回答
0
public static int function(float tag2)
{
 do
 {
  if(tag2%10==0)
  {
   tag2=tag2/10.0;
  }
  else
  {
   int res = tag2;
   return res;
  }
 }
 while(true)
}
于 2013-06-07T08:43:28.010 回答
0

好吧,我不得不说我的解决方案有点好笑!除此之外,它比其他方式使用更多的内存。尽管其他解决方案使用更多的 cpu!生命是权衡!

        string MyNumber = "2.8000000e+1";
        int DotIndex = MyNumber.IndexOf('.');
        MyNumber = MyNumber.Remove(DotIndex, 1);
        if(MyNumber[DotIndex] != '0')
          DotIndex++;
        MyNumber = MyNumber.Remove(DotIndex, MyNumber.Length - DotIndex);
        DotIndex = Int32.Parse(MyNumber);
        //MessageBox.Show(MyNumber); just to show the result!

对于像“2.00000000e+1”这样的输入,它将返回“2”,对于“2.8000000e+1”,它将返回“28”!

于 2013-09-22T05:54:17.867 回答