如何计算iOS中浮点数后的位数?
例如:
- 3.105 应该返回 3
- 3.0 应该返回 0
- 2.2 应该返回 1
更新: 我们还需要添加以下示例。因为我想知道小数部分的位数。
- 1e-1 应该返回 1
如何计算iOS中浮点数后的位数?
例如:
更新: 我们还需要添加以下示例。因为我想知道小数部分的位数。
试试这个方法:
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