LINQ:如何舍入查询结果的十进制值?

时间:2011-10-20 20:31:52

标签: .net xml linq decimal

  

可能重复:
  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”。感谢。

4 个答案:

答案 0 :(得分:3)

您当前的值是字符串。

这应该有效:

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

答案 1 :(得分:1)

您可以使用:

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

答案 2 :(得分:1)

double temp = Double.Parse(d.Element("temp").Value;

string displayTemp = temp.ToString("0.");

答案 3 :(得分:1)

在进行舍入时要注意的一件事是你要尝试哪种舍入。例如以下内容:

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));