Iphone NSNumberFormatter最多显示3位数字
我想让我的一个UILabel最多只能显示3位数字。所以,如果关联值是3.224789,我想看看3.22。如果值是12.563,我想看12.5,如果值是298.38912,我想看298。我一直在尝试使用NSNumberFormatter来实现这一点,但当我将最大有效位设置为3时,小数点后总是有3位。代码如下:Iphone NSNumberFormatter最多显示3位数字,iphone,nsnumberformatter,significant-digits,Iphone,Nsnumberformatter,Significant Digits,我想让我的一个UILabel最多只能显示3位数字。所以,如果关联值是3.224789,我想看看3.22。如果值是12.563,我想看12.5,如果值是298.38912,我想看298。我一直在尝试使用NSNumberFormatter来实现这一点,但当我将最大有效位设置为3时,小数点后总是有3位。代码如下: NSNumberFormatter *distanceFormatter = [[[NSNumberFormatter alloc] init] autorelease]; [distanc
NSNumberFormatter *distanceFormatter = [[[NSNumberFormatter alloc] init] autorelease];
[distanceFormatter setNumberStyle:NSNumberFormatterDecimalStyle];
[distanceFormatter setAlwaysShowsDecimalSeparator:NO];
[distanceFormatter setMaximumSignificantDigits:3];
我一直认为“有效数字”是指小数点前后的所有数字。无论如何,有没有一种使用NSNumberFormatter实现这一点的方法
谢谢 这是我写的一个小函数:
int nDigits(double n)
{
n = fabs(n);
int nDigits = 0;
while (n > 1) {
n /= 10;
nDigits++;
}
return nDigits;
}
NSString *formatNumber(NSNumber *number, int sigFigures)
{
double num = [number doubleValue];
int numDigits = nDigits(num);
NSString *format = [NSString stringWithFormat:@"%%%i.%ilf", sigFigures -= numDigits, sigFigures];
return [NSString stringWithFormat:format, num];
}
在我的测试中,这很好。也许您还必须设置(但不确定):
[distanceFormatter SetUseSignificantDigits:是]代码>
但在您的情况下,仅使用标准字符串格式可能更容易:
CGFloat yourNumber = ...;
NSString* stringValue = [NSString stringWithFormat: @"%.3f", yourNumber];
(注意:这将四舍五入最后一位)我相信
NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init];
formatter.usesSignificantDigits = YES;
formatter.maximumSignificantDigits = 3;
将完全按照您的要求进行操作,即它将始终精确显示3位数字,是小数点前2位,小数点后1位,还是小数点前1位,小数点后2位。感谢您理解此问题。“有效位数”和“小数点右边的位数”之间存在差异。是的,这非常有效。将UseSignificantDigits
标志设置为YES是OP解决方案的关键。我刚刚使用了它,它确实可以跨小数点工作,例如,它可以将$19.17转换为$19.20。请检查我的问题。在斯威夫特,这对我不起作用