问题标签 [nsdecimalnumber]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
730 浏览

objective-c - 加快这种标准差方法

我有这种方法来计算 NSNumber 整数数组的标准偏差,给定一个平均值。计算使用 NSDecimals 来保留最高分辨率。这目前需要许多 cpu 周期,感谢您在保持所需分辨率的同时加快速度的任何帮助!谢谢你。

0 投票
2 回答
6738 浏览

objective-c - 如何将 NSDecimalNumber 转换为双精度

我有一个值存储为 NSDecimalNumber,当我将其转换为双精度时,它会丢失精度。

对于我正在调试的当前数据,该值为 0.2676655。当我向它发送双值消息时,我得到 0.267665。它是截断而不是舍入,这对一些使用哈希来检测同步操作的数据更改的代码造成了严重破坏。

NSDecimalNumber 实例来自第三方框架,因此我不能只用原始双精度数替换它。最终它被插入到 NSMutableString 中,所以我在使用字符串表示形式,但是它需要通过“%.6lf”的格式说明符,基本上我需要小数点后六位数字,所以它看起来像 0.267666。

我怎样才能在不丢失精度的情况下做到这一点?如果有一种很好的方法来格式化 NSDecimalNumber 而无需转换为双精度也可以。

0 投票
1 回答
2567 浏览

objective-c - NSNumberFormatter、NSDecimalNumber 和科学记数法

我与 NSNumberFormatter 发生了严重的争执,即使在阅读了它的大量文档之后,我也无法完全解决我遇到的一个非常简单的问题。我希望你们能帮助我。

我所拥有的:一个NSDecimalNumber表示计算结果,显示在UITextField
我需要的:该结果的科学记数法中。

我在做什么:

会发生什么:
某个结果可能是 0.0099。textBefore将保持正确的值。如果我不告诉格式化程序生成十进制数(在上面的代码段中注释掉),它将从 NSDecimalNumber 创建一个 NSNumber,这会创建一个错误的结果并变成textAfter0.009900000000000001 - 由于 NSNumber 的精度降低而导致舍入错误NSDecimalNumber。
如果我告诉 NumberFormatter 生成小数,它仍然会产生错误的结果。更重要的是,在它插入指数符号(例如“1.23456e-10”)之前,它现在会生成(并因此显示)完整的十进制数,这不是我想要的。
同样,我想让格式化程序使用 NSDecimalNumber 所以它不会


我是否使用错误的课程?我是否误解了文档?有人可以解释为什么会发生这种情况以及如何创建我想要的行为吗?如果我发现任何东西,我当然会继续研究和更新。

0 投票
3 回答
1231 浏览

c# - 从 `NSDecimal` 或 `NSDecimalNumber` 转换为 C# 的 `decimal` 类型

我有一个NSDecimalNumber来自 StoreKit 的SKProduct课程,我想将其转换为 C# 的decimal类型以最大程度地减少精度损失。有没有一种简单的方法来做这样的事情?

我想我的两个选择是:

  1. 假设我了解每个的二进制实现并进行自己的按位转换,或者
  2. 给我NSDecimalNumber一个字符串,然后decimal解析它。

我认为选项 1 工作量太大,甚至可能很脆弱,所以我倾向于选择选项 2。但这似乎也不是我能做的最好的。(我可以忍受它会有多慢,因为它很少发生。

0 投票
2 回答
3857 浏览

ios - NSDecimalNumber 设置和获取值

我有以下财产:

我正在尝试从文本字段设置值:

我收到以下警告:

另外,当我尝试获取以下值时:

我得到错误:

我以前没有使用过 NSDecimalNumber,但是在 Google 上发现它是在处理货币时使用的。有人可以指出我可以使用的帮助函数,它可以让我做我想做的事情吗?

谢谢

0 投票
1 回答
176 浏览

cocoa-touch - 格式化一组 NSDecimalNumber 值

我正在开发一个应用程序,我需要获取几组数值(当前存储为NSDecimalNumber),并将它们显示在列中。每组的量级大致相同,但每组的量级可能会发生变化,我不会提前知道它们是什么。所以一个可能是 (1.23, 2.3, 1.567) 和另一个 (1234.1, 2345, 1999.4) 之类的值。

为了使列对齐,并知道我需要多少空间,我想做的是为每组数字计算出我需要的格式宽度。换句话说,整数位的最大数量和小数位的最大数量。对于上面的示例:第一种情况下为 1 和 3,第二种情况下为 4 和 1。

现在,NSDecimal表示将通过结合尾数的长度和指数的值来直接回答这个问题。问题是,该结构的字段是明确私有的,并且似乎没有任何 API 可以从中获取尾数和指数的值。

一种解决方法可能是将每个数字转换为 POSIX 语言环境中的字符串,然后测量其长度和小数点的位置。但这似乎是一个很长的路要走。

我对我的 C 数学很粗略,但我猜有一些方法可以通过将我的小数转换为 a 来获取这些信息double,然后检查它(标准库函数或戳位)并做一些日志。我不知道究竟如何,或者我是否应该担心转换为有损表示。

是否有更直接和/或更有效的方式来获取这些信息?

0 投票
2 回答
1326 浏览

objective-c - NSDecimalNumber 的 NSDecimalNumber 次幂

我有两个 NSDecimalNumbers,我需要将一个应用到另一个的幂,最初这段代码使用双精度数,我可以使用 pow() 函数计算它,如下所示:

我遇到的问题是我将代码转换为使用 NSDecimalNumbers,虽然它们包含 toThePowerOf 方法,但它只接受 int 值。目前我对这个问题的唯一解决方案是临时转换 NSDecimalNumbers 但这会导致精度损失。

有没有办法我可以用 NSDecimalNumbers 来做这个计算而不会失去精度?

我需要它来处理非整数值,例如:

0 投票
7 回答
2499 浏览

iphone - 检查 NSDecimalNumber 是否为整数

检查实例NSDecimalNumber是否为整数的最简单方法是什么?

谢谢!

0 投票
1 回答
1293 浏览

objective-c - DecimalNumberByAdding 是如何工作的?

我有一种情况需要添加两个 NSDecimal,这是我拥有的代码:

当我尝试添加两个数字(例如 0.01 和 0.02)并且它给了我 0.03 时,它完全可以工作。

但是当我使用整数时,它不起作用。例如,当我尝试将 0.01 和 1 相加时,它给了我一个负数。谁能帮我解决这个问题?

谢谢

0 投票
1 回答
727 浏览

iphone - 将 NSDecimalNumber 中的字符串缩短为 K 表示数千,M 表示数百万等

可能重复:
将 int 转换为缩短的格式化字符串

我想将值转换为NSDecimalNumber字符串,其中:

5 到 6 位数字使用 K 表示千位,并有 3 个有效数字(例如 54,321 ---> 54.3K, 654,321 ---> 65.4K)

7到9位数字用M代表百万,有3位有效数字(如7,654,321 ----> 7.65M, 987,654,321 ---> 9.88M)

10位及以上数字用B表示十亿,有效数字3位

关于最好的方法有什么建议吗?谢谢。

(看到了一些类似的问题,但没有针对 Objective-C/iOS 的问题。)