首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >返回相同的双只有当双是一个int?(无小数) Obj-C

返回相同的双只有当双是一个int?(无小数) Obj-C
EN

Stack Overflow用户
提问于 2013-12-12 02:05:06
回答 1查看 150关注 0票数 0

我使用一个for-loop来确定long double是否是一个int。我设置了for循环,另一个long double,介于2和final^ 1 /2之间。Final是一个循环,基本上是2到2-10减1的幂。然后我在检查final是否是整数。我的问题是,如何只获得整数的final值?我的解释可能有点混乱,下面是我的整个循环代码。顺便说一句,我使用长双,因为我计划增加这些数字非常大。

代码语言:javascript
复制
for (long double ld = 1; ld<10; ld++) {
    long double final = powl(2, ld) - 1;
    //Would return e.g. 1, 3, 7, 15, 31, 63...etc.

    for (long double pD = 2; pD <= powl(final, 0.5); pD++) {
    //Create new long double
    long double newFinal = final / pD;
    //Check if new long double is int
    long int intPart = (long int)newFinal;
    long double newLong = newFinal - intPart;

    if (newLong == 0) {
        NSLog(@"Integer");
        //Return only the final ints?
    }
}
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-12-12 02:09:16

把它转换成整数然后把它从自身中减去?

代码语言:javascript
复制
long double d;
//assign a value to d

int i = (int)d;
if((double)(d - i) == 0) {
    //d has no fractional part
}

作为纸条..。由于浮点数学在编程中的工作方式,这个==检查不一定是最好的选择。最好是决定某种程度的容忍度,并检查d是否在该容忍范围内。

例如:

代码语言:javascript
复制
if(fabs((double)(d - i)) < 0.000001) {
    //d's fractional part is close enough to 0 for your purposes
}

您还可以使用long long intlong double来完成相同的任务。只需确保您对所使用的任何类型都使用了正确的绝对值函数:

  • fabsf(float)
  • fabs(double)
  • fabsl(long double)

编辑.基于对实际问题的澄清.似乎您只是想弄清楚如何从方法中返回集合。

代码语言:javascript
复制
-(NSMutableArray*)yourMethodName {
    NSMutableArray *retnArr = [NSMutableArray array];

    for(/*some loop logic*/) {
        // logic to determine if the number is an int

        if(/*number is an int*/) {
            [retnArr addObject:[NSNumber numberWithInt:/*current number*/]];
        }
    }

    return retnArr;
}

把你的逻辑融入这个方法。找到要返回的数字后,使用我在其中设置的[retnArr addObject:[NSNumber numberWithInt:]];方法将其插入数组中。

返回数组后,访问如下数字:

代码语言:javascript
复制
[[arrReturnedFromMethod objectAtIndex:someIndex] intValue];

或者,您可能希望将它们作为不同的类型抛到NSNumber对象中。

您还可以使用:

  • [NSNumber numberWithDouble:]
  • [NSNumber numberWithLongLong:]

并且有匹配的getter (doubleValuelongLongValue)来提取数字。NSNumber还有很多其他方法,但这些方法似乎是您最想要使用的方法。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20533707

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档