3

如何计算iOS中浮点数后的位数?

例如:

  • 3.105 应该返回 3
  • 3.0 应该返回 0
  • 2.2 应该返回 1

更新: 我们还需要添加以下示例。因为我想知道小数部分的位数。

  • 1e-1 应该返回 1
4

3 回答 3

6

试试这个方法:

NSString *enteredValue=@"99.1234";

NSArray *array=[enteredValue componentsSeparatedByString:@"."];
NSLog(@"->Count : %ld",[array[1] length]);
于 2013-02-25T10:31:55.013 回答
1

我使用的是以下内容:

NSString *priorityString = [[NSNumber numberWithFloat:self.priority] stringValue];
    NSRange range = [priorityString rangeOfString:@"."];
    int digits;
    if (range.location != NSNotFound) {
        priorityString = [priorityString substringFromIndex:range.location + 1];
        digits = [priorityString length];
    } else {
        range = [priorityString rangeOfString:@"e-"];
        if (range.location != NSNotFound) {
            priorityString = [priorityString substringFromIndex:range.location + 2];
            digits = [priorityString intValue];
        } else {
            digits = 0;
        }
    }
于 2013-02-26T09:44:33.980 回答
0

也许有一种更优雅的方式来做到这一点,但是当从 32 位架构应用程序转换为 64 位架构时,我发现许多其他方式都失去了精度并且搞砸了。所以我是这样做的:

bool didHitDot = false;    
int numDecimals = 0;
NSString *doubleAsString = [doubleNumber stringValue];

for (NSInteger charIdx=0; charIdx < doubleAsString.length; charIdx++){

    if ([doubleAsString characterAtIndex:charIdx] == '.'){
        didHitDot = true;
    }

    if (didHitDot){
        numDecimals++;
    }
}

//numDecimals now has the right value
于 2017-08-07T15:03:34.840 回答