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