我正在开发一个应用程序,我需要获取几组数值(当前存储为NSDecimalNumber
),并将它们显示在列中。每组的量级大致相同,但每组的量级可能会发生变化,我不会提前知道它们是什么。所以一个可能是 (1.23, 2.3, 1.567) 和另一个 (1234.1, 2345, 1999.4) 之类的值。
为了使列对齐,并知道我需要多少空间,我想做的是为每组数字计算出我需要的格式宽度。换句话说,整数位的最大数量和小数位的最大数量。对于上面的示例:第一种情况下为 1 和 3,第二种情况下为 4 和 1。
现在,NSDecimal
表示将通过结合尾数的长度和指数的值来直接回答这个问题。问题是,该结构的字段是明确私有的,并且似乎没有任何 API 可以从中获取尾数和指数的值。
一种解决方法可能是将每个数字转换为 POSIX 语言环境中的字符串,然后测量其长度和小数点的位置。但这似乎是一个很长的路要走。
我对我的 C 数学很粗略,但我猜有一些方法可以通过将我的小数转换为 a 来获取这些信息double
,然后检查它(标准库函数或戳位)并做一些日志。我不知道究竟如何,或者我是否应该担心转换为有损表示。
是否有更直接和/或更有效的方式来获取这些信息?