在 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 中舍入双数的主要内容,如果未能解决你的问题,请参考以下文章

在 Java 中舍入一个双精度数

如何在 MySQL 中舍入 DateTime?

scss 在Sass中舍入小数

scss 在Sass中舍入小数

scss 在Sass中舍入小数

如何在动作脚本中舍入数字