如何使用 NSNumberFormatter 从双精度数中截断 0.000 个零
好吧,如果我有一个双精度数,我该如何限制它或将数字截断为 1dp,因为我知道不需要查看它们
double a = 1.6;
NSNumberFormatter *numberFormatter = [[NSNumberFormatter alloc] init];
NSString *numberAsString = [numberFormatter stringFromNumber:[NSNumber numberWithDouble:a]];
[numberFormatter setNumberStyle:NSNumberFormatterDecimalStyle];
[numberFormatter setGeneratesDecimalNumbers:YES];
[numberFormatter setMaximumFractionDigits:1];
[numberFormatter setMinimumFractionDigits:1];
[numberFormatter setAlwaysShowsDecimalSeparator:YES];
NSLog(@"a raw: %f", a); //outputs 1.600000
myLabel.text = [NSString stringWithFormat:@"%@",numberAsString];
NSLog(@"Formatted a: %@", numberAsString); //outputs 2
[numberFormatter release];
所以问题是它四舍五入值并且不留下小数位,我正在尝试让它为 myLabel 输出 1.6。
Ok so if I have a double to begin with how do I limit it or truncate digits to 1dp since I know they're not needed to be viewed
double a = 1.6;
NSNumberFormatter *numberFormatter = [[NSNumberFormatter alloc] init];
NSString *numberAsString = [numberFormatter stringFromNumber:[NSNumber numberWithDouble:a]];
[numberFormatter setNumberStyle:NSNumberFormatterDecimalStyle];
[numberFormatter setGeneratesDecimalNumbers:YES];
[numberFormatter setMaximumFractionDigits:1];
[numberFormatter setMinimumFractionDigits:1];
[numberFormatter setAlwaysShowsDecimalSeparator:YES];
NSLog(@"a raw: %f", a); //outputs 1.600000
myLabel.text = [NSString stringWithFormat:@"%@",numberAsString];
NSLog(@"Formatted a: %@", numberAsString); //outputs 2
[numberFormatter release];
So the problem is it rounds the value and leaves no decimal place, I'm trying to get it to output just 1.6 for myLabel.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
我不确定,但您可以尝试使用
NSString *formatted = [NSString stringWithFormat:@"%.1f", a];
,然后使用格式化的标签文本I am not sure but you can try with
NSString *formatted = [NSString stringWithFormat:@"%.1f", a];
, then use the formatted as the label text