Convert.ToInt或String.Split:哪个更有效?

时间:2010-03-24 19:12:43

标签: c# floating-point integer

哪种方法更适合删除浮动小数位,还是有更有效的方法?

舍入并不重要,我有兴趣显示数字

      Float number;            
      1- int wholeNumber= Convert.ToInt(number);
         string display=wholeNumber.ToString();

      2- string [] splitNumber= number.ToString().Split('.');
         string display=splitNumber[0];

8 个答案:

答案 0 :(得分:5)

由于您只是删除小数,请执行:

int wholeNumber = (int)number;

这将有效地减少小数。请注意,它不会对数字进行舍入,但这不是您请求的行为。

答案 1 :(得分:5)

以下是两个效率更高的选项:

只需输入数字而不是调用Convert.ToInt32

((int)number).ToString()

使用小数为零的格式说明符格式化数字:

number.ToString("N0")

第一个应该稍快一些,因为格式化整数比浮点数更容易。

如果你想要一些真正有效的东西,你可以将数字转换为整数,然后使用经过优化的代码将其格式化为字符串,只做你需要的代码而已。

答案 2 :(得分:4)

1更好,因为它描述了你正在做的事情。在不同的地区进行2次休息。

答案 3 :(得分:2)

int i = (int)number;
string display = i.ToString();

强制转换为int将自动删除任何小数位

答案 4 :(得分:2)

我认为通过提高效率,你的意思是“更快”。

你自己试过这个吗?我怀疑你会得到一个确定的答案,除非有其他人继续前进并尝试它。

设置循环执行相同的过程1000次左右(根据需要调整数量),然后计算差异。

答案 5 :(得分:2)

使用number.ToString(“N0”)是一个扣篮。尝试优化它是没有意义的,无论你正在做什么来向用户显示字符串将是很多更昂贵。

答案 6 :(得分:1)

如果它仅用于显示,请传入正确的格式字符串,而您根本不需要转换:

Float number;             
string display=number.ToString("F0"); 

注意:这是有效的编码,不一定是内存或速度效率 - 您只能通过每个方法的许多重复循环的时间来确定。

答案 7 :(得分:1)

这个测试通过这两个工作。虽然不确定效率。您认为哪种读法更好?关于你正在做什么,截断调用更明确。

[Test]
public void Getting_whole_number()
{
   Assert.AreEqual("5", Math.Truncate(5.5).ToString());
   Assert.AreEqual("5", ((int)5.5).ToString());
}