在 Objective-C 中舍入双数
Posted
技术标签:
【中文标题】在 Objective-C 中舍入双数【英文标题】:Rounding up double numbers in Objective-C 【发布时间】: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)
有解决办法吗?
【问题讨论】:
So many duplicates... 【参考方案1】:使用<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
之前检查结果的范围,否则转换会调用未定义的行为。
@R.: true - 为简单起见,我假设已知结果在int
的范围内,但在更一般的情况下,我们需要在转换之前执行范围检查.【参考方案2】:
假设您的浮点数是nr
。
没有内置函数:
float nr;
int temp;
if (nr % 10 > 0)
temp = nr++;
else
temp = nr;
nr = temp;
【讨论】:
除了不必要的赋值(nr++
?)、隐式转换和冗长之外,代码中还有一个错误:nr % 10
应该是nr % 1
。以上是关于在 Objective-C 中舍入双数的主要内容,如果未能解决你的问题,请参考以下文章