如何计算iOS中的浮点数后的位数?
如何计算iOS中的浮点数后的位数?
例如:
- 3.105应该返回3
- 3.0应该返回0
- 2.2应该返回1
更新:我们还需要添加下面的例子。 因为我想知道小数部分的位数。
- 1e-1应该返回1
试试这个方法:
NSString *enteredValue=@"99.1234"; NSArray *array=[enteredValue componentsSeparatedByString:@"."]; NSLog(@"->Count : %ld",[array[1] length]);
我使用的是以下内容:
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; } }
也许有一个更优雅的方法来做到这一点,但是当从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