如何在ios上正确格式化货币

2024-02-17

我正在寻找一种在不使用 TextField hack 的情况下将字符串格式化为货币的方法。

例如,我想将数字“521242”转换为“5,212.42” 或者,如果我有一个低于 1 美元的数字,我希望它看起来像这样:“52”->“0.52”

Thanks


您可能想要这样的东西(假设货币是浮动货币):

NSNumberFormatter *numberFormatter = [[NSNumberFormatter alloc] init];
[numberFormatter setNumberStyle: NSNumberFormatterCurrencyStyle];
NSString *numberAsString = [numberFormatter stringFromNumber:[NSNumber numberWithFloat:currency]];

根据您将 52 视为 0.52 的要求,您可能需要除以 100.0。

这种方法的好处是它会尊重当前的语言环境。因此,在适当的情况下,它会将您的示例格式化为“5.212,42”。

Update:也许我发布示例的速度有点快。正如康拉德·舒尔茨(Conrad Shultz)在下面指出的,在处理货币金额时,最好将数量存储为NSDecimalNumbers。这将大大减少令人头痛的舍入误差。如果你这样做,上面的代码片段就会变成(假设货币是NSDecimalNumber*):

NSNumberFormatter *numberFormatter = [[NSNumberFormatter alloc] init];
[numberFormatter setNumberStyle: NSNumberFormatterCurrencyStyle];
NSString *numberAsString = [numberFormatter stringFromNumber:currency];
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在ios上正确格式化货币 的相关文章

随机推荐

  • 安装 Forge Installer - 自动启动安装程序

    我正在使用 InstallForge 创建安装程序 我希望创建一个安装程序 该安装程序将在启动时自动启动已安装的程序 我认为安装程序可以在启动文件夹中创建快捷方式 并且该程序应该在启动时加载 我用谷歌搜索并找到了解决方案 但当我尝试时却不起
  • jboss as 7 - 在同一Linux服务器中运行多个实例 - 独立与域

    我下载了 jboss tar 文件 复制到我的测试服务器中 解压并将其安装在 HOME jboss 现在 我需要在一台服务器上同时运行三个实例 开发 QA UAT Domain模式适合这种情况吗 我的结论是事实并非如此 域模式是跨多个服务器
  • git pull --rebase 通过保留本地更改来解决冲突

    我在当地分支机构重新获得了硕士学位 与此同时 有人在远程对该分支进行了更改 我在做git pull rebase 我不明白 git 在命名时如何解释这个命令current and incoming 也ours and theirs 我应该选
  • 使用 terraform aws_acm_certificate_validation 时缺少 DNS 验证记录

    在尝试创建 AWS Route53 资源和 AWS Certificate Manager 资源时 我一整天都陷入 Terraform 错误 这 2 位是一个更广泛的项目的一部分 通过其静态服务功能托管在 s3 中的网站 具体来说 当 CN
  • iphone中出现键盘时如何显示标签栏

    大家好 我正在一个基于选项卡栏的应用程序中工作 我需要显示键盘 键盘通常出现 但我希望应该显示我的选项卡栏 并且在选项卡栏上方只有键盘应该显示如何完成此操作 谢谢你们 您可以将选项卡栏与键盘一起移动 如下所示 IBAction textBo
  • 是否可以比使用 hashmap 更快地将字符串映射到 int?

    我知道我不应该优化程序的每个点 所以请考虑这个问题是 学术 的 我最多有 100 个字符串和每个字符串的整数 如下所示 MSFT 1 DELL 2 HP 4 ABC 58 该集合是预先初始化的 这意味着一旦创建它就永远不会改变 设置初始化后
  • “berks update ”到底是做什么的?

    根据 berks help update 该命令应该 更新 Berksfile 中指定的说明书 和依赖项 是的 这就是它所说的 但这到底是什么意思呢 这与 Berksfile 中不同类型的 食谱 规范有何不同 更新命令将尝试查找每个说明书的
  • WordPress:自动删除x天前的帖子?

    很长一段时间以来 我一直在寻找一个可以删除超过一定 年龄 例如 30 天 的帖子的插件 做这个的最好方式是什么 下面的 SQL 可以找到所有已经存在 30 天或更长时间的帖子 SELECT FROM wp posts WHERE post
  • 如何在 Emacs 中找到建议函数的默认提示?

    当我查看文档时beginning of defun 有一个注释 This function is advised Around advice senator Move backward to the beginning of a defun
  • 在 unix (nginx) 上托管时.NET Core 中的 TimeZoneInfo

    例如 当我尝试执行以下操作时 TimeZoneInfo FindSystemTimeZoneById Central European Standard Time 我收到错误 即TimeZone在本地计算机上不可用 当我在本地运行它时 它可
  • 在 Droid X 上裁剪图片将生成的图像设置为壁纸

    当我尝试裁剪用户从其图库中选择的图像时 我的程序遇到了问题 到目前为止 该问题仅在 Droid X 上运行时出现 因为在原始 moto Droid 上运行正常 基本上 该问题是在运行裁剪意图时发生的 一旦用户裁剪照片并单击保存按钮 它就会用
  • 等待 Cypress 中未覆盖的元素

    我收到错误 imed out retrying cy click failed because this element a class icon href home a is being covered by another elemen
  • 当响应为比例时的逻辑回归(使用 JAGS)

    我试图在 JAGS 中拟合逻辑回归模型 但我的数据格式为 success y attempts n 而不是二进制变量 在 R 中 可以通过使用 glm y n 和 权重 参数来将模型拟合到此类数据 但我不确定如何将其拟合到 JAGS 中 这
  • android.support.test.espresso.NoActivityResumedException:恢复阶段没有活动

    我正在尝试为我的活动编写测试用例 我有多项活动 其中一项活动没有问题 但当我尝试在其他活动上运行测试时出现以下错误ActivityTest类 android support test espresso NoActivityResumedEx
  • Docker 服务启动失败

    重启虚拟机后命令docker 图片命令显示错误 Cannot connect to the Docker daemon at unix var run docker sock Is the docker daemon running 看来d
  • 在 SQL Server 2005 中对非常大的结果集进行分页的有效方法是什么?

    EDIT 我仍在等待更多答案 谢谢 在 SQL 2000 时代 我曾经使用临时表方法 使用新的标识列和主键创建临时表 然后选择 A 和 B 之间的标识列 When SQL 2005我来了之后发现了Row Number 从那时起我就一直在使用
  • 如何将API网关与内部ALB集成

    根据https docs aws amazon com apigateway latest developerguide http api develop integrations private html https docs aws a
  • 中止 WebClient.DownloadFileAsync 操作

    安全取消 DownloadFileAsync 操作的最佳方法是什么 我有一个线程 后台工作人员 它启动下载并管理它的其他方面 当我看到该线程有时我结束CancellationPending true 开始下载后 线程将静止并旋转 直到下载完
  • 简单的按键绑定无法按预期工作

    I m trying to bind ctrl x to editor action clipboardCutAction cut but with the condition that it is only invoked when te
  • 如何在ios上正确格式化货币

    我正在寻找一种在不使用 TextField hack 的情况下将字符串格式化为货币的方法 例如 我想将数字 521242 转换为 5 212 42 或者 如果我有一个低于 1 美元的数字 我希望它看起来像这样 52 gt 0 52 Than