首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如果需要,只提供精确的数字-这是可能的吗?

问如果需要,只提供精确的数字-这是可能的吗?
EN

Stack Overflow用户
提问于 2011-11-18 05:40:59
回答 1查看 269关注 0票数 0

有没有可能以不同的精度表示相同的变量?

例如,如果我要表示两个整数的加法,它将如下所示:

代码语言:javascript
复制
result = 2+3;
NSLog(@"%.0f", result);

但如果有除法,结果会是这样的:

代码语言:javascript
复制
result = 2/3;
NSLog(@"%.1f", result);

尽管呈现的是π(pi),但它将如下所示:

代码语言:javascript
复制
result = M_PI;
NSLog(@"%.19f", result); //And it would be 3.141592653589793238
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-11-18 05:58:46

NSNumber将为您执行一些快速而粗糙的格式化,

代码语言:javascript
复制
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

代码语言:javascript
复制
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还允许可变精度;在小数点后使用星号而不是数字:

代码语言:javascript
复制
int precision = 3;
NSLog(@"%.*f", precision, 2/3.0);
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8174735

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档