我有这样的功能:我可以加快我的特殊轮功能吗?
int round(double val) {
if (val >= 0) {
return (int)Math.Floor(val + 0.5);
}
return (int)Math.Ceiling(val - 0.5);
}
我把它在我的计划中有许多次,我的意思是很多次,所以它的每一个milisecond的运行时间的问题。有没有比现在更快的方法? THX
编辑:
的功能是用于在图像中计算的线的切线方向的算法的一部分。它来自学术文章。由于它以弧度值处理角度,因此它使用小而精确的数字。
I/O的例子:
0 -> 0
1 -> 1
1.1 -> 1
1.51 -> 2
-0.1 -> 0
-1 -> -1
-1.1 -> -1
-1.51 -> -2
EDIT2:
根据意见,我改变检查功能,这一个:
int round(double val) {
return (int)Math.Round(val, MidpointRounding.AwayFromZero);
}
更新的问题是:数学.Round功能是最快的舍入方式?
你刚才不是执行'Math.Round'用'MidpointRounding.AwayFromZero'? –
根据你的输出,这是'Math.Round'与'MidpointRounding.AwayFromZero' –
当我深入研究它时,似乎我做了...... :-)但是,你能否提出做这样的最快方法四舍五入? – Jarda