让我们假设我有一个类型为v
的变量NSDecimalNumber
let v = 34.596904
以其自己的格式。
我想知道这个数字的精度和小数位数,而不是默认数字。我没有在NSDecimalNumber
类中找到任何提供这些值的函数,或者也许有人想对它的工作原理有所了解。
precision = 8
scale = 6
精度是数字中的有效位数,小数位是十进制后的有效位数
答案 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中,Decimal
和NSDecimalNumber
可以轻松桥接,因此您最好尽可能地使用Decimal
。