NSDecimalNumber值的小数位数和精度

时间:2019-05-15 08:19:32

标签: ios swift nsnumber nsdecimalnumber

让我们假设我有一个类型为v的变量NSDecimalNumber

let v = 34.596904以其自己的格式。

我想知道这个数字的精度和小数位数,而不是默认数字。我没有在NSDecimalNumber类中找到任何提供这些值的函数,或者也许有人想对它的工作原理有所了解。

precision = 8
scale = 6

精度是数字中的有效位数,小数位是十进制后的有效位数

1 个答案:

答案 0 :(得分:0)

此扩展程序将为您的唯一示例提供特定的值:

extension Decimal {
    var scale: Int {
        return -self.exponent
    }

    var precision: Int {
        return Int(floor(log10((self.significand as NSDecimalNumber).doubleValue)))+1
    }
}

用法:

let v: NSDecimalNumber = NSDecimalNumber(string: "34.596904")

print("precision=\((v as Decimal).precision)") //->precision=8
print("scale=\((v as Decimal).scale)") //->scale=6

但是我不确定在您考虑的所有情况下这是否都能产生预期的结果,因为您仅显示了一个示例...


另外,在Swift中,DecimalNSDecimalNumber可以轻松桥接,因此您最好尽可能地使用Decimal