2014-09-22 58 views
5

我需要将正浮点向上舍入到最接近的整数。如何将下一个整数向上舍入为正数?

examples; 

1.0 rounds up to 1  
2.1 rounds up to 3 
3.5 rounds up to 4 
4.9 rounds up to 5 

即总是舍入。

+0

FWIW,向上舍入和最接近是不相容的,可以很容易地编写函数来满足您的需求。你的意思是简单地收集。 – 2014-09-22 11:12:08

+3

4.4应该轮到什么? -5或-4? – 2014-09-22 11:13:06

+1

查看http://docwiki.embarcadero.com/Libraries/XE6/en/System.Math.Ceil – 2014-09-22 11:15:09

回答

13

使用Math单位的Ceil函数。从文档:

将变量向上朝向正无穷大。

调用Ceil(如在天花板中)以获得大于或等于X的最小整数 。X的绝对值必须小于MaxInt。对于 例如:

  • 的Ceil(-2.8)= -2
  • 的Ceil(2.8)= 3
  • 的Ceil(-1.0)= -1

我无法分辨Ceil的行为是否符合您对负面输入值的期望,因为您未指定在此处执行的操作。然而,如果Ceil不符合您的期望,通过结合Abs()Ceil()

+0

这正是我想要的,但在win32(或.net专用)上可用的System.Math? – srayner 2014-09-22 11:17:56

+3

在D2010上,它是'Math'单位。在DXE2或更高版本中,命名空间是'System.Math'。 – 2014-09-22 11:18:37