ios – 什么时候使用NSDecimal,NSDecimalNumber而不是双倍?

ios – 什么时候使用NSDecimal,NSDecimalNumber而不是双倍?,第1张

概述对于简单的用途,例如跟踪重量值如65.1kg,使用NSDecimal / NSDecimalNumber超过双倍有什么好处? 我在这里的理解是双重(甚至浮动)在这种情况下提供了足够的精度.如果我错了,请纠正我. 首先,阅读Josh Caswell的链接.在与钱合作时尤其重要.在您的情况下,根据您的目标,它可能重要或不重要.如果您输入65.1并且想要准确地返回65.1,那么您肯定需要使用正确舍入到N 对于简单的用途,例如跟踪重量值如65.1kg,使用NSDecimal / NSDecimalNumber超过双倍有什么好处?

我在这里的理解是双重(甚至浮动)在这种情况下提供了足够的精度.如果我错了,请纠正我.

解决方法 首先,阅读Josh Caswell的链接.在与钱合作时尤其重要.在您的情况下,根据您的目标,它可能重要或不重要.如果您输入65.1并且想要准确地返回65.1,那么您肯定需要使用正确舍入到NSDecimalNumber等十进制值的格式.如果,当你输入65.1时,你想要“一个65.1的小错误值”,那么浮动或双重就好了(取决于你愿意接受多少错误).

65.1是一个很好的例子,因为它证明了这个问题.这里的Swift因为它很容易演示,但是ObjC是一样的:

1> 65.1$R0: Double = 65.099999999999994  2>

1/10碰巧是二进制的重复小数,就像1/3是十进制的重复小数.所以65.1编码为double是“接近”65.1,但不完全准确.如果您需要十进制编码数的精确表示(即大多数人期望的),请使用NSDecimalNumber.这并不是说NSDecimalNumber比double更准确.它只是强加了不同的舍入误差而不是双倍.您喜欢哪些舍入错误取决于您的用例.

总结

以上是内存溢出为你收集整理的ios – 什么时候使用NSDecimal,NSDecimalNumber而不是双倍?全部内容,希望文章能够帮你解决ios – 什么时候使用NSDecimal,NSDecimalNumber而不是双倍?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1009503.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-22
下一篇 2022-05-22

发表评论

登录后才能评论

评论列表(0条)

保存