【问题标题】:How to show two digits in float value如何在浮点值中显示两位数
【发布时间】:2015-01-22 13:15:28
【问题描述】:

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

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

如果 floatValue 可能像 65.5234 它可以工作并且 string = 65.52 但是如果浮点值像 65.5025 它不起作用并且 string=65.5

我怎样才能改变它?我需要将我的字符串显示为 65.50 我正在使用 iOS 7

【问题讨论】:

  • NSNumberFormatter?
  • 我认为你应该更好地解释你的问题或至少预期的结果它似乎与stackoverflow.com/questions/1343890/…重复
  • 我发现了我的错误。四舍五入后,我使用 NSNumberFormatter 来拆分类别 65 256.60 的数字。现在我只用 NSNumberFormatter 进行舍入和拆分
  • 格式说明符不应该只是%.2f吗?不需要零。

标签: ios objective-c string-formatting


【解决方案1】:
 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]] ;

【讨论】:

  • 对于一个简单的printf 格式问题,NSNumberFormatter 不是矫枉过正吗?
  • @Zaph 每个语言环境都使用相同的小数分隔符吗? ;)
  • 我不知道asker面临的完整场景。认为这在某些情况下可能会有所帮助。但你是对的,这对于简单的格式化来说有点过头了。
【解决方案2】:

这适用于代码:

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

输出:

字符串:65.50

请提供一个未产生预期结果的完整示例(如上)。

更多信息请参见man printf

【讨论】:

  • 如果您打算在 UI 中显示数字,则应考虑国际化。并非所有语言环境都使用“。”作为他们的小数分隔符。
【解决方案3】:

你所拥有的对我来说似乎是正确的。在 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。在你的系统上试试这个例子,看看打印出什么。您的浮点变量是否可以在某处进行调整?

【讨论】:

    猜你喜欢
    • 2012-05-22
    • 2011-09-03
    • 2010-10-08
    • 2020-06-29
    • 2018-02-12
    • 2012-06-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多