最后我找到了解决方案。所有的解释都是正确的,但是这个问题的“临时”解决方案是NSNumberFormatter.
NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init];
[formatter setAlwaysShowsDecimalSeparator:NO];
[formatter setAllowsFloats:YES];
[formatter setFormatterBehavior:NSNumberFormatterBehavior10_4];
[formatter setMinimumFractionDigits:0];
[formatter setMaximumFractionDigits:10]; //THIS IS IMPORTANT AS AFTER DECIMAL, DIGITS SHOULD BE LESS THAN 17 because there is difference of 6.12323e-17
double result = cos(90*M_PI/180);
NSNumber *numberResult = [NSNumber numberWithDouble:result];
[formatter setNumberStyle:NSNumberFormatterDecimalStyle];
NSLog(@"%@",[formatter stringFromNumber:number]); //Prints 0
这是一个临时解决方案。您也可以使用 %f 打印 cos 90 的值,但它也会在小数点后打印不需要的六个 0。