我试图在列表视图的列中将每一行舍入到最接近的1.0,因此意味着1.58应该显示2.00而1.48应该是1.00 -
Math.Round(listView1.Columns[2].ToString(), 10);
答案 0 :(得分:2)
您需要在digits参数中使用0
。您希望此处没有数字,但是您将10
传递给数字参数,该参数表示在十进制后用10位数进行舍入。
var res = Math.Round(1.58, 0);//2
var res = Math.Round(1.48, 0);//1
刚看到您尝试Round
字符串,您必须将其转换为Double
或decimal
或其他任何内容。
var rounded = Math.Round(Double.Parse(listView1.Columns[2].ToString()), 0);
答案 1 :(得分:1)
如果您希望将 String 作为最终结果(只要您在代码中放置 ToString()),您可以使用适当的< em>格式化字符串(在您的情况下为“F0”):
String result = (1.58).ToString("F0"); // <- "2"
...
String result = (1.48).ToString("F0"); // <- "1"
答案 2 :(得分:0)
您无法直接对字符串进行舍入。
string val=listView1.Columns[2].ToString();
double i;
if(Double.TryParse(val, out i))
{
Console.WriteLine(Math.Round(i)); // you can use Math.Round without second
// argument if you need rounding to the
// nearest unit
}