有没有可能以不同的精度表示相同的变量?
例如,如果我要表示两个整数的加法,它将如下所示:
result = 2+3;
NSLog(@"%.0f", result);但如果有除法,结果会是这样的:
result = 2/3;
NSLog(@"%.1f", result);尽管呈现的是π(pi),但它将如下所示:
result = M_PI;
NSLog(@"%.19f", result); //And it would be 3.141592653589793238发布于 2011-11-18 05:58:46
NSNumber将为您执行一些快速而粗糙的格式化,
NSNumber * five = [NSNumber numberWithDouble:3+2];
NSNumber * twoThirds = [NSNumber numberWithDouble:2/3.0];
NSNumber * mPi = [NSNumber numberWithDouble:M_PI];
NSLog(@"%@", [five stringValue]);
NSLog(@"%@", [twoThirds stringValue]);
NSLog(@"%@", [mPi stringValue]);2011-11-17 21:52:12.621精度13359:903 5
2011-11-17 21:52:12.624精确度13359:903 0.6666666666666666
2011-11-17 21:52:12.625精确度13359:903 3.141592653589793
但是你真的应该使用NSNumberFormatter
NSNumberFormatter * formatter = [[NSNumberFormatter alloc] init];
[formatter setUsesSignificantDigits:YES];
NSLog(@"%@", [formatter stringFromNumber:five]);
NSLog(@"%@", [formatter stringFromNumber:twoThirds]);
[formatter setMaximumSignificantDigits:16];
NSLog(@"%@", [formatter stringFromNumber:mPi]);2011-11-17 21:52:12.629精度13359:903 5
2011-11-17 21:52:12.630精确度13359:903 0.666667
2011-11-17 21:52:12.630精确度13359:903 3.14159265358979
string format specifiers还允许可变精度;在小数点后使用星号而不是数字:
int precision = 3;
NSLog(@"%.*f", precision, 2/3.0);https://stackoverflow.com/questions/8174735
复制相似问题