gpt4 book ai didi

objective-c - 在 Objective-C 中获取 NSDecimalNumber 的指数?

转载 作者:可可西里 更新时间:2023-11-01 03:13:39 30 4
gpt4 key购买 nike

给定一个 NSDecimalNumber,我如何找到指数(比例)?

虽然原则上应该可以通过首先转换为 NSString 然后进行一些丑陋的字符串操作来做到这一点,但我宁愿避免它。

使用 Java BigDecimal,我可以调用 scale()获取比例的方法。

NSDecimalNumber 是否存在类似的简洁方法?

最佳答案

如果出于某种原因你真的需要指数(除了简单地显示,你可以配置一个数字格式化程序来给你),你可以使用 -doubleValue 方法获得原始 double 值,然后使用 frexp(3) 获取尾数和指数值。

用于执行和存储 float 学的对象背后的整个设计是您可以更有效地处理计算和精度错误,但是,该设计的局限性在于一旦您从标量(例如 double 或尾数和指数的组合),您应该留在对象框架内,而不是转换回(可能)不太精确的格式。

我建议使用 -doubleValue 是最好的选择,因为其他答案建议访问可能会更改的私有(private)结构记录,并且使用这些建议不会造成精度损失,而事实上,很可能是(如头文件中所述)。转换为 double 时,您和那些使用/阅读您的代码的人确切地知道可能出现的精度错误是什么,因为该类型已被很好地理解并且有很好的记录。

最后,如果您想确定转换是否会导致错误,您可以创建并使用 NSDecimalNumberHandler这将为您提供有关转换为双标量类型时可能出现的舍入/精度误差类型的信息。

我还建议您使用 apple bug reporter 添加一个增强请求,声明您希望直接访问指数以及可能添加更高精度的类型,例如 -longDoubleValue 方法。

编辑包含更多信息

关于objective-c - 在 Objective-C 中获取 NSDecimalNumber 的指数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12643297/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com