2014-09-22 60 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