在Objective-C中四舍五入双位数
我需要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之前,
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;