Objective-c将Long和float转换为String

时间:2011-11-04 15:28:21

标签: objective-c nsstring

我需要在Objective-C中将两个数字转换为字符串。

一个是长号,另一个是浮点数。

我在互联网上搜索了一个解决方案,每个人都使用stringWithFormat:,但我无法使其正常工作。

我试试

NSString *myString = [NSString stringWithFormat: @"%f", floatValue]

12345678.1234 并获取“12345678.00000”作为输出

NSString *myString = [NSString stringWithFormat: @"%d", longValue]

有人可以告诉我如何正确使用stringWithFormat吗?

3 个答案:

答案 0 :(得分:61)

本文讨论如何使用各种格式字符串将数字/对象转换为NSString实例:

String Programming Guide: Formatting String Objects

使用此处指定的格式:

String Programming Guide: String Format Specifiers

对于你的浮动,你想要:

[NSString stringWithFormat:@"%1.6f", floatValue]

长期以来:

[NSString stringWithFormat:@"%ld", longValue] // Use %lu for unsigned longs

但老实说,有时候使用NSNumber类更容易:

[[NSNumber numberWithFloat:floatValue] stringValue];
[[NSNumber numberWithLong:longValue] stringValue];

答案 1 :(得分:3)

floatValue必须是double。至少这个编译正确,并在我的机器上做了预期的事情 浮点数只能存储大约8个十进制数字,而您的数字 12345678.1234 需要更高的精度,因此只有大约8个最高位数存储在浮点数中。

double floatValue = 12345678.1234;
NSString *myString = [NSString stringWithFormat: @"%f", floatValue];

结果

2011-11-04 11:40:26.295 Test basic command line[7886:130b] floatValue = 12345678.123400

答案 2 :(得分:0)

您应该使用 NSNumberFormatter ,例如:

    NSNumberFormatter * nFormatter = [[NSNumberFormatter alloc] init];
    [nFormatter setNumberStyle:NSNumberFormatterDecimalStyle];
    NSNumber *num = [nFormatter numberFromString:@"12345678.1234"];
    [nFormatter release];