gpt4 book ai didi

objective-c - 具有有效数字的 NSNumberFormatter 格式 0.0 不正确

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:46:34 24 4
gpt4 key购买 nike

我已经将 NSNumberFormatter 设置为使用有效数字进行格式化,因此它应该只显示正确显示值所需的小数位数。

当它用于格式化 7.0 时,它完全按预期工作并生成 @"7",但是当它用于格式化 0.0 时> 格式化程序生成 @"0.0" 而不是预期的 @"0"

NSNumberFormatter *doubleValF = [[NSNumberFormatter alloc] init];
[doubleValF setNumberStyle:NSNumberFormatterDecimalStyle];
[doubleValF setRoundingMode:NSNumberFormatterRoundHalfUp];

doubleValF.maximumFractionDigits = 9;
doubleValF.minimumFractionDigits = 0;
doubleValF.minimumSignificantDigits = 0;
doubleValF.maximumSignificantDigits = 30;
[doubleValF setUsesSignificantDigits:YES];

double value1 = 0.0;
NSString *value1String = [doubleValF stringFromNumber:[NSNumber numberWithDouble:value1]];

double value2 = 7.0;
NSString *value2String = [doubleValF stringFromNumber:[NSNumber numberWithDouble:value2]];

NSLog(@"value1=%@", value1String);
NSLog(@"value2=%@", value2String);

当我运行这段代码时,我得到以下输出:

2012-12-15 15:57:03.425 StackOverflowTests[41701:11303] value1=0.0
2012-12-15 15:57:03.426 StackOverflowTests[41701:11303] value2=7

最佳答案

按照 David 的 LaMacchia 的帖子,只需检查零值并设置 sig fig 模式:

if(fabs(value) < 1e-6) {
self.numberLabelFormatter.usesSignificantDigits = NO;
}
else {
self.numberLabelFormatter.usesSignificantDigits = YES;
}
self.numberLabel.text = [self.numberLabelFormatter stringFromNumber:[NSNumber numberWithDouble:value]];

这可能不是正确的方法,但对我有用。

关于objective-c - 具有有效数字的 NSNumberFormatter 格式 0.0 不正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13897372/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com