2

我的目标是为 iPhone 创建一个客户计算器应用程序,并使用 Xcode 编写我的应用程序。我找不到解决方案的问题是如何在不使用科学计数法或一组小数的情况下格式化数字。

我试过了...

buttonScreen.text = [NSString stringWithFormat:@"%f",currentNumber];

buttonScreen.text = [NSString stringWithFormat:@"%g",currentNumber];

%f格式化总是在小数点后打印 6 位数字,所以如果用户输入“5”,它会显示 5.000000。

%g格式化在 6 位后跳转到科学计数法,因此 1000000 在显示时变为 1e+06。

我希望能够在没有无意义的小数或科学记数法的情况下显示以下数字:

123,456,789;
1.23456789;
12345.6789;
-123,456,789;
-1.23456789;
-12345.6789;
4

4 回答 4

2

对于浮点数格式,您可以使用 %f,并且您必须指定最小字段宽度和字符精度。如果使用 %4.2f,则表示最小宽度为 4 个字符(如果使用少于 4 个,将在左侧用空格填充)和 2 个字符以表示精度。如果您想要 10 个字符的最小宽度和 0 个小数精度,请使用 %10.0f 。

在您的特定情况下,您应该使用 %.0f 来表示没有十进制精度的数字。

buttonScreen.text = [NSString stringWithFormat:@"%.0f",currentNumber];

您可以在此处找到快速参考。不是objective-c 文档,而是等价的。

为了完整起见,您可以找到 NSString 格式化遵循的规范文档:

https://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/Strings/Articles/FormatStrings.html

和这里:

http://pubs.opengroup.org/onlinepubs/009695399/functions/printf.html

编辑截断:

buttonScreen.text = [NSString stringWithFormat:@"%d",(int)currentNumber];

但是,您应该阅读一些关于浮动表示、精度和强制转换的内容,以了解可能的不良行为。

于 2013-01-22T02:16:26.427 回答
2

看看NSNumberFormatter

配置正确,它可以在适当的时候添加逗号。您还需要告诉它要使用多少有效数字。

于 2013-01-22T02:17:43.240 回答
0

您与 Xcode 和 Objective-c 的交互并不像您在这里怀疑的那样多,底层实现是printf。查看本教程,了解如何使用 printf 格式说明符

于 2013-01-22T02:14:28.667 回答
0

那么你希望它看起来像什么?stringWithFormat 格式是旧 C sprintf 的超集。那么您是否尝试过使用 d 和变体来满足您的喜好?

于 2013-01-22T02:15:42.230 回答