哪种方法更适合删除浮动小数位,还是有更有效的方法?
舍入并不重要,我有兴趣显示数字
Float number;
1- int wholeNumber= Convert.ToInt(number);
string display=wholeNumber.ToString();
2- string [] splitNumber= number.ToString().Split('.');
string display=splitNumber[0];
答案 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());
}