Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c NSNumberFormatter前导0';s和小数_Objective C_Ios - Fatal编程技术网

Objective c NSNumberFormatter前导0';s和小数

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

有没有办法用前导0和小数格式化NSNumber?例如,我需要有写4.5和000的能力。目前,我有它将允许小数,但不领先0的

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.5
myString: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