【问题标题】:LINQ: How to round decimal value for query result? [duplicate]LINQ:如何对查询结果进行四舍五入? [复制]
【发布时间】:2011-12-12 02:46:56
【问题描述】:

可能重复:
c# - How do I round a decimal value to 2 decimal places (for output on a page)

我有一个 XML 文件,其中包含字符串格式的温度十进制值。例子:

 <temp>30</temp>
 <temp>40.6</temp>

我像这样使用 LINQ 检索温度

 temperature = d.Element("temp").Value

如何修改此代码,以便在以字符串格式分配温度之前适当地向上或向下舍入该值。这意味着,在第一个示例中,温度将为“30”,而在第二个示例中,温度将为“41”。谢谢。

【问题讨论】:

    标签: .net xml linq decimal


    【解决方案1】:

    您当前的值是字符串。

    这应该可以工作:

    string temperature = 
       double.Parse( d.Element("temp").Value, CultureInfo.InvariantCulture)
       .ToString("0.");
    

    【讨论】:

      【解决方案2】:

      你可以使用:

       Math.Round(double.Parse(d.Element("temp").Value))
      

      【讨论】:

        【解决方案3】:
        double temp = Double.Parse(d.Element("temp").Value;
        
        string displayTemp = temp.ToString("0.");
        

        【讨论】:

          【解决方案4】:

          四舍五入时要注意的一件事是您要进行哪种四舍五入。例如:

          var num = "2.5";
          Console.WriteLine(Decimal.Parse(num).ToString("0."));
          Console.WriteLine(Math.Round(Decimal.Parse(num),0));
          

          输出: 3 2

          您需要执行以下操作才能使用 Math.Round 输出 3:

          Console.WriteLine(Math.Round(Decimal.Parse(num),0, MidpointRounding.AwayFromZero));
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2010-09-06
            • 1970-01-01
            • 1970-01-01
            • 2019-07-02
            • 1970-01-01
            • 2019-06-29
            相关资源
            最近更新 更多