2011-05-12 82 views
8

我需要用C代碼將double值四捨五入到下一個最大的整數值。在Objective-C中四捨五入數字

舉例來說,如果我有:

1.0 (double)它必須是1 (int)
1.01 (double)它必須是2 (int)
5.67 (double)它必須是6 (int)
76.43 (double)它必須是77 (int)

有沒有解決方案?

+3

[這麼多的重複(http://stackoverflow.com/search?q=%5Bobjc%5D+round+up+double)... – 2011-05-12 21:52:47

回答

30

<math.h>使用ceil()功能:

#include <math.h> 

double x = 1.01;  // x = 1.01 
double y = ceil(x); // y = 2.0 
int i = (int)y;  // i = 2 

或更簡潔,如果你只是想整型結果:

int i = (int)ceil(x); 
+0

您可能想要在轉換爲「int」之前檢查結果的範圍,否則轉換會調用未定義的行爲。 – 2011-05-12 12:21:39

+0

@R .: true - 爲了簡單起見,我假設結果已知位於「int」的範圍內,但在更一般的情況下,我們需要在轉換之前執行範圍檢查。 – 2011-05-12 12:23:26

-1

比方說,你浮點數是nr。 沒有內置的功能:

float nr; 
int temp; 
if (nr % 10 > 0) { 
    temp = nr++; 
} else { 
    temp = nr; 
} 
nr = temp; 
+0

除了不必要的賦值('nr ++'?),隱式轉換和冗長之外,代碼中還有一個錯誤:'nr%10'應該是'nr%1'。 – CompuChip 2014-04-10 08:22:01