【发布时间】:2011-08-23 23:38:47
【问题描述】:
我需要 C 代码来将双精度值四舍五入到下一个最大整数值。
例如,如果我有:
1.0 (double)一定是1 (int)1.01 (double)一定是2 (int)5.67 (double)一定是6 (int)76.43 (double)一定是77 (int)
有解决办法吗?
【问题讨论】:
标签: objective-c c double int rounding
我需要 C 代码来将双精度值四舍五入到下一个最大整数值。
例如,如果我有:
1.0 (double)一定是1 (int)1.01 (double)一定是2 (int)5.67 (double)一定是6 (int)76.43 (double)一定是77 (int)
有解决办法吗?
【问题讨论】:
标签: objective-c c double int rounding
使用<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 结果:
int i = (int)ceil(x);
【讨论】:
int 之前检查结果的范围,否则转换会调用未定义的行为。
int 的范围内,但在更一般的情况下,我们需要在转换之前执行范围检查.
假设您的浮点数是nr。
没有内置函数:
float nr;
int temp;
if (nr % 10 > 0) {
temp = nr++;
} else {
temp = nr;
}
nr = temp;
【讨论】:
nr++?)、隐式转换和冗长之外,代码中还有一个错误:nr % 10 应该是nr % 1。