在Objective-C中四舍五入双位数

在Objective-C中四舍五入双位数,objective-c,c,double,int,rounding,Objective C,C,Double,Int,Rounding,我需要C代码将一个双精度值四舍五入到下一个最大整数值 例如,如果我有: 1.0(双精度)必须是1(整数) 1.01(双精度)必须是2(整数) 5.67(双精度)必须是6(整数) 76.43(双精度)必须是77(整数) 有解决方案吗?使用中的函数: 假设您的浮点数是nr。 无内置功能: float nr; int temp; if (nr % 10 > 0) { temp = nr++; } else { temp = nr; } nr = temp; 在转换为int之前,

我需要C代码将一个双精度值四舍五入到下一个最大整数值

例如,如果我有:

1.0(双精度)
必须是
1(整数)

1.01(双精度)
必须是
2(整数)

5.67(双精度)
必须是
6(整数)

76.43(双精度)
必须是
77(整数)

有解决方案吗?

使用
中的函数:


假设您的浮点数是
nr
。 无内置功能:

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

在转换为
int
之前,您可能需要检查结果的范围,否则,转换将调用未定义的行为。@R:true-为简单起见,我假设结果在
int
的范围内,但在更一般的情况下,我们需要在转换之前执行范围检查……除了不必要的赋值(
nr++
?)、隐式强制转换和冗长之外,代码中有错误:
nr%10
可能应该是
nr%1
int i = (int)ceil(x);
float nr;
int temp;
if (nr % 10 > 0) {
    temp = nr++;
} else {
    temp = nr;
}
nr = temp;