我需要用C代碼將double值四捨五入到下一個最大的整數值。在Objective-C中四捨五入數字
舉例來說,如果我有:
1.0 (double)
它必須是1 (int)
1.01 (double)
它必須是2 (int)
5.67 (double)
它必須是6 (int)
76.43 (double)
它必須是77 (int)
有沒有解決方案?
我需要用C代碼將double值四捨五入到下一個最大的整數值。在Objective-C中四捨五入數字
舉例來說,如果我有:
1.0 (double)
它必須是1 (int)
1.01 (double)
它必須是2 (int)
5.67 (double)
它必須是6 (int)
76.43 (double)
它必須是77 (int)
有沒有解決方案?
從<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);
您可能想要在轉換爲「int」之前檢查結果的範圍,否則轉換會調用未定義的行爲。 – 2011-05-12 12:21:39
@R .: true - 爲了簡單起見,我假設結果已知位於「int」的範圍內,但在更一般的情況下,我們需要在轉換之前執行範圍檢查。 – 2011-05-12 12:23:26
比方說,你浮點數是nr
。 沒有內置的功能:
float nr;
int temp;
if (nr % 10 > 0) {
temp = nr++;
} else {
temp = nr;
}
nr = temp;
除了不必要的賦值('nr ++'?),隱式轉換和冗長之外,代碼中還有一個錯誤:'nr%10'應該是'nr%1'。 – CompuChip 2014-04-10 08:22:01
[這麼多的重複(http://stackoverflow.com/search?q=%5Bobjc%5D+round+up+double)... – 2011-05-12 21:52:47