【发布时间】:2024-01-02 07:25:01
【问题描述】:
我想编写一个函数来使用银行家的舍入方法将双精度数舍入为整数(将一半舍入为偶数:http://en.wikipedia.org/wiki/Rounding#Round_half_to_even),例如:
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;
}
}
}
但这很慢,我什至不确定它是否准确。
有没有一些快速准确的方法来做到这一点。
【问题讨论】:
-
@AdamCasey 我需要解决这个问题,但我没有解决它,所以我找他帮忙。还是我的问题真的很愚蠢?
-
您的需求和问题不是问题。检查我评论中的链接;你需要证明你是一个。投入一些精力去研究这个问题,B.尝试自己编写一些代码,然后 c.尝试在您的代码失败时对其进行调试
-
@AdamCasey 我已经完成了我的研究,但我认为它没有帮助。我的代码又慢又笨拙,我不知道它是否准确。这是我能做的最好的了。
-
这就是一个好问题现在的样子。我将反对票改为赞成票!