我想编写一个函数,使用银行家舍入法(四舍六入五成双:http://zh.wikipedia.org/wiki/四舍六入五成双)将double舍入为int,例如:
int RoundToInt(double x);
我该怎么做?
更新:
我能得到的最好结果是这样的:
int RoundToInt(double x)
{
int s = (int)x;
double t = fabs(x - s);
if ((t < 0.5) || (t == 0.5 && s % 2 == 0))
{
return s;
}
else
{
if (x < 0)
{
return s - 1;
}
else
{
return s + 1;
}
}
}
但这样做太慢了,而且我也不确定它是否准确。
是否有一种快速而准确的方法来做到这一点?