Objective c NSNumberFormatter前导0';s和小数
有没有办法用前导0和小数格式化NSNumber?例如,我需要有写4.5和000的能力。目前,我有它将允许小数,但不领先0的Objective c NSNumberFormatter前导0';s和小数,objective-c,ios,Objective C,Ios,有没有办法用前导0和小数格式化NSNumber?例如,我需要有写4.5和000的能力。目前,我有它将允许小数,但不领先0的 NSNumberFormatter *f = [[NSNumberFormatter alloc] init]; f.numberStyle = NSNumberFormatterNoStyle; NSString *myString = [f numberFromString:@"4.5"]; NSLog(@"myString: %@",myString); NSSt
NSNumberFormatter *f = [[NSNumberFormatter alloc] init];
f.numberStyle = NSNumberFormatterNoStyle;
NSString *myString = [f numberFromString:@"4.5"];
NSLog(@"myString: %@",myString);
NSString *myOtherString = [f numberFromString:@"000"];
NSLog(@"myOtherString:%@",myOtherString);
上面的输出将是:“myString:4.5”和“myOtherString:0”。我需要能够同时输出'4.5'和'000'
我看过苹果公司的“数据格式指南”,但没有多大成功。您可以尝试以下内容:
NSString *myString = [NSString stringWithFormat:@"%03f", [myNSNumber floatValue]];
这将在后面打印您的号码,强制打印至少3位数字,并在任何空白处填充“0”。注意
[f numberFromString:@“4.5”]
返回的是NSNumber*
而不是NSString*
你想要这样的东西:
NSNumberFormatter *f = [[NSNumberFormatter alloc] init];
f.numberStyle = NSNumberFormatterNoStyle;
NSNumber *myNumber;
NSString *myString;
myNumber = [f numberFromString:@"4.5"];
[f setNumberStyle:kCFNumberFormatterDecimalStyle];
myString = [f stringFromNumber:myNumber];
NSLog(@"myString: %@",myString);
myNumber = [f numberFromString:@"000"]; // Note that the extra zeros are useless
[f setFormatWidth:3];
[f setPaddingCharacter:@"0"];
myString = [f stringFromNumber:myNumber];
NSLog(@"myString: %@",myString);
NSLog输出:
myString:4.5myString:000 如果没有字符串开头,只需创建如下数字:
myNumber = [NSNumber numberWithFloat:4.5];
myNumber = [NSNumber numberWithInt:0];
或者只使用标准格式:
myString = [NSString stringWithFormat:@"%.1f", [myNumber floatValue]];
myString = [NSString stringWithFormat:@"%03d", [myNumber intValue]];
或者,如果不需要NSNumber
表示,只需使用标准格式:
myString = [NSString stringWithFormat:@"%.1f", 4.5];
myString = [NSString stringWithFormat:@"%03d", 0];
这是千禧年主题的一个变化,怎么样
NSNumber *myNumber;
NSString *myString =@"000" ;
NSString * myStringResult;
NSNumberFormatter *f = [[NSNumberFormatter alloc] init];
f.numberStyle = NSNumberFormatterNoStyle;
[f setHasThousandSeparators:FALSE]; //-- remove seperator
[f setMinimumIntegerDigits:[myString length ]]; //-- set minimum number of digits to display using the string length.
myNumber = [f numberFromString:myString];
myStringResult = [f stringFromNumber:myNumber];
NSLog(@"myStringResult: %@",myStringResult);
由于这是经常被问到的问题,而且苹果的文档很烂,这就是人们将要寻找的答案。下面的链接有两种解决方案。一个使用
nsstringwithformat:
,另一个使用NSNumberFormatter
你知道,我认为我们回答错了。我们把一个字符串转换成一个数字,然后再转换成一个字符串??我想我们需要的是一个数字。你能告诉我们你到底想要一个字符串还是一个数字吗。它是从什么开始的??你的代码和问题有点偏颇。Cheers@markhunte我注意到了同样的事情,所以我提供了创建
NSNumber
的可选实现。还有一个问题是,NSNumber
甚至是必需的,所以我使用NSNumber
@markhunte提供了可选实现,输入来自UITextField。它适用于描述为:0000000,00,0,1,2,3…以及4.5,5.25等的大小。CoreData类型为float,属性为NSNumber(因为我希望能够在分组表中对其进行排序,数字为:0,1,2,11,23,而不是0,1,11,2,23)。它在表格单元格中显示为文本。转换是从字符串到数字再到字符串。我知道。然而,NSNumericSearch似乎不适用于iOS,至少对我来说是这样。过去我一直忽视000,但有些客户想要这种能力。干杯,我只是为了000的案子才这么做的。但在发帖前的最后一刻,马刺错误地尝试了45而不是4.5。这就是为什么我添加了这两个数字的工作。但正如你所说,这并不是我的真正意图。我知道000是无用的。它不是一个值,而是大小的描述符。输入字段可以有:0000000,00或整数或浮点数。我想我可能得换一种方式来做。我可能必须使用字符串并设置自定义排序,尽管我在没有任何乐趣的情况下尝试了NSNumericSearch。对我来说,strodonation=[NSString stringWithFormat:@“0%d”,[strodonation integerValue];w0rked