如何在浮点值中显示两位数

时间:2015-01-22 13:15:29

标签: ios objective-c string-formatting

我使用此代码在浮点值中的点后显示数字:

NSString *string = [NSString stringWithFormat:@"%.02f", floatValue];

如果floatValue可以像65.5234一样工作,字符串= 65.52 但是如果浮动值如65.5025则不起作用且字符串= 65.5

我该如何更改?我需要将我的字符串显示为65.50 我正在使用iOS 7

3 个答案:

答案 0 :(得分:2)

 NSNumberFormatter *format = [[NSNumberFormatter alloc]init];
[format setNumberStyle:NSNumberFormatterDecimalStyle];
[format setRoundingMode:NSNumberFormatterRoundHalfUp];
[format setMaximumFractionDigits:2];
[format setMinimumFractionDigits:2];

string = [NSString stringWithFormat:@"%@",[format stringFromNumber:[NSNumber numberWithFloat:65.50055]] ;

答案 1 :(得分:2)

这适用于代码:

float floatValue = 65.5025;
NSString *string = [NSString stringWithFormat:@"%.02f", floatValue];
NSLog(@"string: %@", string);

输出:

  

字符串:65.50

请提供一个完整的例子(如上所述),但不会产生预期的结果。

有关详细信息,请参阅man printf

答案 2 :(得分:0)

你所拥有的对我来说似乎是正确的。在iPhone上的iOS7中用xcode 6.1.1构建了一个小测试

float val=65.5025;
NSString *string1 = [NSString stringWithFormat:@"%.02f", val];
NSString *string2 = [NSString stringWithFormat:@"%.03f", val];
NSString *string3 = [NSString stringWithFormat:@"%.04f", val];
NSLog(@"Test from string1 = %@",string1);
NSLog(@"Test from string2 = %@",string2);
NSLog(@"Test from string3 = %@",string3);

输出:

Test from string1 = 65.50
Test from string2 = 65.503
Test from string3 = 65.5025

看起来你的代码正在发生其他事情?您使用的是最新的xcode吗?在您的系统上尝试此示例并查看打印出来的内容。您的浮点变量可以在某处调整吗?