LINQ: Как округлить десятичное значение для результата запроса?

Возможный дубликат:
Как округлить десятичное значение до 2 знаков после запятой (для вывода на страницу)

У меня есть XML-файл с десятичными значениями температуры в строковом формате. Примеры:

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

Я получаю температуру, используя LINQ, как это

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

Как мне изменить этот код, чтобы значение было округлено в большую или меньшую сторону, прежде чем присвоить температуру в строковом формате. Это означает, что в первом примере температура будет "30", а во втором примере температура будет "41". Благодарю.

4 ответа

Решение

Ваши текущие ценности являются строками.

Это должно работать:

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

При округлении нужно следить за тем, какой тип округления вы пытаетесь выполнить. Например следующее:

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

выходы: 3 2

Вам нужно сделать следующее, чтобы вывести 3, используя Math.Round:

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

Ты можешь использовать:

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

string displayTemp = temp.ToString("0.");
Другие вопросы по тегам