NSDecimalNumber 对长数字进行舍入

2023-12-05

我试图让 NSDecimalNumber 打印出大数字,15 位或更多数字。在 15 位数字中,我看到 111,111,111,111,111。超过 15 位数字时,我看到的是 1,111,111,111,111,110,即使格式化的数字是 1111111111111111。

一个例子来说明我的问题:

NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init];
[formatter setNumberStyle:NSNumberFormatterDecimalStyle];
[formatter setMaximumSignificantDigits:25];
[formatter setUsesSignificantDigits:true];

NSDecimalNumber* test = [NSDecimalNumber decimalNumberWithString:@"12345678901234567890"];

NSString* output = [formatter stringFromNumber:test]; 
NSLog( @"num value: %@", test ); 
NSLog( @"str value: %@", output );

输出如下:

2010-09-16 09:24:16.783 SimpleCalc[739:207] num value: 12345678901234567890
2010-09-16 09:24:16.784 SimpleCalc[739:207] str value: 12,345,678,901,234,600,000

我错过了什么愚蠢的事情?


这里的问题是NSNumberFormatter不处理NSDecimalNumbers在内部,它们被转换为double您会看到由此造成的精度损失。来自文档:

表示形式包括整数、浮点数和双精度数;浮点数和双精度数可以格式化为指定的小数位。

您可能应该看看- (NSString *)descriptionWithLocale:(NSDictionary *)locale方法上NSDecimalNumber.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

NSDecimalNumber 对长数字进行舍入 的相关文章

  • 在 xsl 中格式化科学数字表示形式

    我的 XML 中有以下值 1 8959581529998104E 4 我想将其格式化为使用 XSL 给我的确切数字 0 000189595815299981 format number 1 8959581529998104E 4 0 000
  • PHP 生成一个预先定义长度的随机数

    我正在尝试使用 mt rand 创建一个函数来生成真正的随机数 因为 rand 还不够 问题是我需要预先定义数字的长度 假设我需要一个 10 位随机数 无论如何 我一直在搞乱 这就是我想出的 function randomNumber le
  • 将数字拆分为总和部分

    有没有一种有效的算法可以将数字分成N分段 以便数字之和等于原始数字 并具有最小基数 例如 如果我想将 50 分成 7 个小节 并且最小基数为 2 我可以这样做10 5 8 2 3 5 17 以及任何其他数量的组合 我想将数字保留为整数 并且
  • Rails 中数字的本地化

    对新帖子感到抱歉 但我的第一个帖子关注的是阿拉伯 波斯数字 但问题似乎更大 我想知道是否有人做了一个 gem 来处理 ruby rails 中数字的本地化 I18n 官方语言环境 https github com svenfuchs rai
  • 将随机字节缩放到选定的整数范围

    我有一个真正的随机字节文件 我想要一个返回随机整数的函数在给定的范围内通过从文件中获取一个字节并对其进行缩放 这是正确的词吗 public int getInt int l int h throws IOException int m h
  • 在java中获取两个日期之间的天数[重复]

    这个问题在这里已经有答案了 您好 有两个日期格式的日期 如何获得两者之间的天数差异 Date date1 Date date2 int numberDays 建议使用 JodaTime API 来处理日期 import java util
  • 如何获取数字小数部分的长度?

    如何找出小数的小数部分的长度或位数 我可以看到一些方法 例如像这样的字符串 public static int getNumberOfFractionDigits Number number Double fractionPart numb
  • 如何编写一个快速函数来计算数字的总除数?

    我必须找到给定数字 N 的除数总数 其中可以大到 10 14 我尝试计算最多 10 7 的素数 然后使用素数因子的指数找到除数 但是事实证明它太慢了 因为使用筛子找到素数需要 0 03 秒 如果可能的话 如何更快地计算除数总数而不计算素数
  • 使用 f:convertNumber 时设置小数点分隔符

    我想知道如何在 JSF 应用程序上设置默认的小数点分隔符 我有一些
  • 在 DOS/Batch 中,08 小于 1,但 07 大于 1。为什么?

    在 DOS 批处理中 if 08 lss 1 echo true 与 真 相呼应 09也是如此 08和09都小于1 However if 07 lss 1 echo true 不回显任何内容 01至07不小于1 为什么 08年和09年有什么
  • 为什么 JavaScript 中“0 === -0”为真?

    在最近的一篇文章中http wtfjs com http wtfjs com 一位作者在没有解释的情况下写了以下内容 这恰好是真实的 0 0 returns true 我对 运算符的理解是 如果操作数指向同一个对象 它会返回 true 此外
  • PHP 在单位数字之前预先添加前导零,动态 [重复]

    这个问题在这里已经有答案了 PHP 是否有一种快速 即时的方法来测试单个字符串 然后在前面添加前导零 Example year 11 month 4 stamp year add single zero if needed month Im
  • is_numeric() 与 is_float() 与 is_int()

    我的理解是 if is numeric input true 那么要么 is float input true OR is int input true OR input 0 OR input是一个数字字符串 意味着如果没有用引号括起来 它
  • 科学记数法中的小“e”/Matlab中的Double是什么

    当我计算一个非常小的数字时 matlab给出 1 12345e 15这是什么 我可以将其解释为 1 12345 10 15 或其 1 12345 e 15 我很着急 抱歉问了这个愚蠢的问题 e 代表指数 它的科学计数法 http en wi
  • 在bash中生成不重复的随机数序列

    今晚我一直在忙着学习 bash 我一直在尝试创建一个随机数字序列 该序列使用一个范围内的所有数字 并且每个数字只使用一次 因此 输入 1 5 的范围将输出 4 3 5 2 1 或 2 5 1 3 4 等 我在这件事上陷入了困境 Thanks
  • 什么时候使用 NSDecimal、NSDecimalNumber 而不是 double 更好?

    对于简单的用途 例如跟踪 65 1kg 等重量值 使用 NSDecimal NSDecimalNumber 比使用 double 有什么好处吗 我的理解是 在这种情况下 双精度 甚至浮点 提供了足够的精度 如果我错了 请纠正我 首先 阅读乔
  • 从数组中打印素数

    我想用方法从数组中打印出所有素数 我可以用一个 int 来完成 但不知道如何从数组中返回某些数字 感谢帮助 public static boolean isPrime int tab boolean prime true for int i
  • Jquery:获取数字数组中的最大值[关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 使用jquery 如何获得数组或数字
  • 使用 rmultinom() 函数从 R 中的多项分布生成随机数

    我想从具有三个值的多项分布生成大小为 20 的样本 例如1 2 and 3 例如 样本可以是这样的sam 1 2 2 2 2 3 1 1 1 3 3 3 2 1 2 3 1 下面的代码可以工作 但没有得到预期的结果 gt rmultinom
  • 在 php 中将单词转换为数字 II

    这里有一个很棒的功能在 PHP 中将单词转换为数字 https stackoverflow com questions 1077600 converting words to numbers in php来自埃尔约博 但我有一个问题 字符串

随机推荐

  • 不接受 gnuplot-datafile 中的单列

    我想在 gnuplot Ubuntu 上为 4 6 4 中绘制一些数据 但我遇到了一个奇怪的问题 我想要绘制的数据是这样的 0 200002 1 802499 0 019630 0 026596 1 0 200004 1 782499 0
  • 递归地将 XML 添加到 TreeView 中

    我正在尝试使用 C 将节点的 XML 文件导入到 TreeView 中的相同节点结构中 我发现了很多使用单节点结构的示例 但在遍历 XML 文件并用它填充 TreeView 时遇到了很多问题 这是 XML 文件的示例
  • for 循环消除

    我想使用指数技巧消除for我的 C 11 程序中的循环 类似于强制 funroll loops 这是一个例子 template
  • 如何确定从 Java 文本文件中读取的最大值和最小值

    我正在为班级做作业 正在寻找一些有用的指导 而不是完整的解决方案 基本上 我必须编写一个 Java 程序 读取文本文件并逐行列出信息 列出行号 最后打印出最大值和最小值以及与每个值相关的年份 该文本文件包含年份和该年的温度 因此 它列出了类
  • 在sql server中生成序列

    我正在开发一个函数 该函数将采用一个小数和一个大数作为参数 并返回一个包含其间 并包括 所有内容的表 我知道我可以使用游标并增加一个变量 每次迭代将其添加到基于范围的表中 但如果可能的话 我宁愿避免使用游标 还有其他人有关于执行此操作的方法
  • 如何在js文件中写入php代码

    我的程序是我将页面划分为第一个 div 中的 div 我添加了此代码
  • 宏完成后删除文档

    我有一个 Word 2007 docm 文件 我将其作为电子邮件附件发送给用户 以便他们更新文件 宏从服务器下载文件并正确安装它们 而不是将文件作为电子邮件附件发送并相信用户能够正确安装 我会改用 VBScript 文件 但不允许我通过电子
  • JSF 验证错误,丢失值

    我有一个带有复合键的更新表单 所有复合键都显示在输出框中 因为我为每个复合键都有隐藏字段 验证错误后 这些输出框值为空 我该如何解决这个问题 我在同一页面上 所以它不需要有这些值 这确实是一种非直觉行为h inputHidden 我曾经提交
  • 获取 API 时出错/无法从方法“getHeroes”返回“List”类型的值,因为返回类型为“Future?>”

    我是 Dart Flutter 的新手 正在努力使用 API 这是我的模型文件夹中的文件 List
  • 画布上下文中的 React-chartjs-2 渐变填充错误

    我有一个react chart js2组件 我试图在填充上制作渐变 但是我遇到了一些不同的打字稿错误 并且似乎无法让它工作 该文档表示将 data 属性作为函数传递并引用画布 以便访问画布上下文以添加渐变 不幸的是 这不起作用 这是文件的代
  • SVN Repo 给出 404 not Found

    我已经在 Ubuntu 12 04 上安装了 svn 版本 1 6 17 r1128011 我在这里做了我的回购 sudo mkdir home 2nd disk svn 设置我的 etc apache2 mods enabled dav
  • 寻找一种更Pythonic的方式来访问数据库

    我有很多遵循这种模式的 python 方法 def delete session guid conn get conn cur conn cursor cur execute delete from sessions where guid
  • Facebook 视频上传 OAuthException 200 错误

    我有与此类似的代码 位于 使用 php sdk graph api 将视频上传到 facebook 在我编写的应用程序中 但昨天我开始收到 OAuthException 错误 我寻找了一个简单的视频上传示例到 Facebook 页面进行测试
  • 当我添加新数据时,列表项会发生变化...为什么?

    我有一种方法可以将文件转换为字节 以便稍后可以通过互联网发送它 无论如何 因为我计划发送大文件 所以我发送大块文件而不是发送整个文件 每个块由一个字节数组 byte 组成 我对这一切都很陌生 所以我想在发送之前将每个块保存在块列表 List
  • 如果发生错误,using 语句会回滚数据库事务吗?

    我在 using 语句中有一个 IDbTransaction 但我不确定如果在 using 语句中抛出异常 它是否会回滚 我知道 using 语句将强制调用 Dispose 但是有人知道 Rollback 是否也是如此 Update 另外
  • 如何获取两个日期之间的天数objective-c [重复]

    这个问题在这里已经有答案了 我正在尝试制作一个标签 标明距离活动还剩多少天 我想计算今天的日期和事件日期之间的差异 我正在使用这段代码 它给了我 4600 在我使用今天的日期之前它工作正常 NSDateFormatter f NSDateF
  • 对 Python Dataframe 中的行求和

    我刚刚开始学习 Python 所以如果这个问题已经在其他地方得到了回答 请原谅我 我想创建一个名为 Sum 的新列 它只是将前面的列相加 Risk Parity tail VCIT VCLT PCY RWR IJR XLU EWL Date
  • 如何在 MATLAB 中中止程序执行?

    如何在不退出 MATLAB 的情况下停止 MATLAB 中的程序执行 我正在寻找类似 C 中的 exit 1 的东西 我尝试过退出 退出 但它们也会杀死 MATLAB 这不是我想要的行为 理想情况下 我会使用 try catch 来冒泡错误
  • 我的碰撞检测无法正常工作

    我正在使用 pygame 和 math 模块在 python 中编写游戏 我编写了这些代码来进行碰撞检测 我制作了 5 个障碍物 我希望我的玩家与它们发生碰撞 但问题是在玩游戏的过程中 有时有效 有时无效 这些是我定义的碰撞函数 def c
  • NSDecimalNumber 对长数字进行舍入

    我试图让 NSDecimalNumber 打印出大数字 15 位或更多数字 在 15 位数字中 我看到 111 111 111 111 111 超过 15 位数字时 我看到的是 1 111 111 111 111 110 即使格式化的数字是