在listview中完成

时间:2013-12-02 14:00:00

标签: c# math

我试图在列表视图的列中将每一行舍入到最接近的1.0,因此意味着1.58应该显示2.00而1.48应该是1.00 -

Math.Round(listView1.Columns[2].ToString(), 10);

3 个答案:

答案 0 :(得分:2)

您需要在digits参数中使用0。您希望此处没有数字,但是您将10传递给数字参数,该参数表示在十进制后用10位数进行舍入。

var res =  Math.Round(1.58, 0);//2
var res =  Math.Round(1.48, 0);//1

刚看到您尝试Round字符串,您必须将其转换为Doubledecimal或其他任何内容。

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  
}