2015-07-21 66 views
-5

这是哪个函数的最短形式(不改变这个名字)?四舍五入浮点数的最短函数C++

int NearestInteger(float N) 
{ 
    return round(N); 
} 
+3

你有没有听说过Google? –

+0

我什么都没发现! –

+1

@Vasiu:你的要求与答案中的功能有什么不同吗?(这里是http://stackoverflow.com/questions/485525/round-for-float-in-c?rq=1)? –

回答

1

如果你没有C++ 11,你可以这样做:

int NearestInteger(float N) { 
    return int(floor(N + 0.5f)); 
} 

然而,它可能对大型浮标不正确工作。首先,如果您的号码不适合int,任何垃圾都可以退回。其次,它可能会返回大于2^24的错误结果,因为not each integer is exactly representable in single precision float number

+1

Exceeded *“如果在目标类型中截断的值不能为 ,则行为未定义。”*每4.9/1'[conv.fpint]'。 –

+0

@TonyD是的,你是对的。来电者不得不担心溢出。 – stgatilov