我需要在Objective-C中将两个数字转换为字符串。
一个是长号,另一个是浮点数。
我在互联网上搜索了一个解决方案,每个人都使用stringWithFormat:
,但我无法使其正常工作。
我试试
NSString *myString = [NSString stringWithFormat: @"%f", floatValue]
12345678.1234 并获取“12345678.00000”作为输出
和
NSString *myString = [NSString stringWithFormat: @"%d", longValue]
有人可以告诉我如何正确使用stringWithFormat吗?
答案 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];