Это расширение даст вам конкретное значение для вашего единственного примера:
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
как можно дальше.