NSNumber 到 NSString(如果有小数则不带尾随零)

发布于 2024-12-06 06:59:41 字数 687 浏览 0 评论 0原文

我正在努力解决这个问题,并且找不到任何资源: 我有一个 NSNumber,我想在 UITextField 中显示它,以便用户可以编辑它。 所以我需要将此 NSNumber 转换为 NSString,如下所示:

float value  -> desired string value
1.0000000... -> 1
10.000000... -> 10
1.1230000... -> 1.123 or 1,123 depending on the locale
1000000.0... -> 1000000

我尝试使用 NSNumberFormatter,但随后出现空格或逗号对于大数字:

1000000.0... -> 1,000,000 or 1 000 000 depending on the locale

我也尝试过

[NSString stringWithFormat:@"%g", val]

但是对于大数字我有一个科学的表达:

1000000.0 -> 1e+06

有人在这方面有成功的经验吗?

I'm struggling with this issue, and I couldn't find any resource for it :
I have an NSNumber that I want to display in an UITextField, so the user can edit it.
So I need to convert this NSNumber to an NSString, like this :

float value  -> desired string value
1.0000000... -> 1
10.000000... -> 10
1.1230000... -> 1.123 or 1,123 depending on the locale
1000000.0... -> 1000000

I've tried to use NSNumberFormatter, but then I get spaces or comas for big numbers :

1000000.0... -> 1,000,000 or 1 000 000 depending on the locale

I also tried

[NSString stringWithFormat:@"%g", val]

But then for big numbers I have a scientific expression :

1000000.0 -> 1e+06

Did somebody have a successful experience with this ?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

热血少△年 2024-12-13 06:59:41

NSNumberFormatter 有这样的方法:

- (void)setGroupingSeparator:(NSString *)string

我认为,您可以返回到您拥有的变体:

1000000.0... -> 1,000,000 or 1 000 000 depending on the locale

并使用该函数设置附加参数:

[formatter setGroupingSeparator:@""];

或者此外尝试此方法:

[formatter setUsesGroupingSeparator:NO];

NSNumberFormatter has such method as :

- (void)setGroupingSeparator:(NSString *)string

I think, you can return to variant where you has:

1000000.0... -> 1,000,000 or 1 000 000 depending on the locale

and set additional parameter using that function:

[formatter setGroupingSeparator:@""];

Or moreover try this method:

[formatter setUsesGroupingSeparator:NO];
江南月 2024-12-13 06:59:41

NSNumberFormatter 解决方案,您走在正确的道路上。

但是:

  • 它使用的格式取决于区域设置(如果您不覆盖它,则使用默认区域设置,或者您可以设置 NSFormatter 使用的区域设置),因为 NSLocale 信息还携带区域格式信息(使用美国区域设置或法国区域设置格式化数字会导致不同的格式和不同的表示形式)
  • 您可以通过调整 NSNumberFormatter 的选项来自定义格式,例如更改使用的分组分隔符、更改小数点分隔符等。

这样您就可以真正自定义 NSNumberFormatter 将数值表示为字符串的方式。

NSNumberFormatter is the solution, you were on the right path.

But:

  • the formatting it uses depends on the locale (either it uses the default locale if you don't override it, or you can set the locale used by the NSFormatter), because the NSLocale information also carries the Region Formatting info (formatting numbers using the US locale or the FR locale leads to different formats and different representations)
  • You can customize the formatting by tuning the options of NSNumberFormatter, like changing the grouping separators used, changing the decimal separator, etc.

This way you can really customize the way the NSNumberFormatter represents the numeric value into a string.

美人骨 2024-12-13 06:59:41

尝试将 nsnumber 值转换为 NSInteger 或 CGFloat 并将其存储在新变量中。然后将转换后的变量设置为 uitextfield。

CGFloat floatNumber = [numberInNSNumber floatValue];

textfield.text = [NSString stringWithFormat:@"%0.2f",floatNumber];

我认为它应该适合你..!!

try converting nsnumber value to NSInteger or CGFloat and store it in the new variables. Then set the converted variables to uitextfield.

CGFloat floatNumber = [numberInNSNumber floatValue];

textfield.text = [NSString stringWithFormat:@"%0.2f",floatNumber];

I think it should work for you..!!

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文