Ios 浮点数的不精确性
如果我创建了一个双倍值为Ios 浮点数的不精确性,ios,objective-c,c,nsnumber,Ios,Objective C,C,Nsnumber,如果我创建了一个双倍值为0.085的NSNumber,那么这个数字似乎增加了额外的精度。但是,0.85的情况并非如此。我不明白为什么会这样,但我相信有一个非常明显的答案。有人知道为什么吗 例如: NSNumber *n1 = [NSNumber numberWithDouble:0.85]; NSNumber *n2 = [NSNumber numberWithDouble:0.085]; NSLog(@"Number: %@", n1); // Number: 0.85 NSLog(
0.085
的NSNumber
,那么这个数字似乎增加了额外的精度。但是,0.85的情况并非如此。我不明白为什么会这样,但我相信有一个非常明显的答案。有人知道为什么吗
例如:
NSNumber *n1 = [NSNumber numberWithDouble:0.85];
NSNumber *n2 = [NSNumber numberWithDouble:0.085];
NSLog(@"Number: %@", n1); // Number: 0.85
NSLog(@"Number: %@", n2); // Number: 0.08500000000000001
这与double
有关,而不是与NSNumber
有关double
是一个值,它不会提供特定级别的精确小数点。@HotLicks此问题没有问题,也不要求发布问题之前必须了解一门语言的全部内容。@AirsourceLtd-可能没有,但他应该检查一下“提问”页面在他输入问题时呈现给他的20个左右的副本中的一个。@HotLicks-当然,但标记这一点,而不是OP缺乏知识。@AirsourceLtd-不应该使用Objective-C(至少没有任何严肃的意图)。