Масштаб и точность значения NSDecimalNumber - PullRequest
0 голосов
/ 15 мая 2019

Предположим, у меня есть переменная v типа NSDecimalNumber

let v = 34.596904 в собственном формате.

Я хочу знать точность и масштаб этого числа, а не значения по умолчанию. Я не нашел ни одной функции в классе NSDecimalNumber, которая бы давала эти значения, или, может быть, кто-то хотел бы пролить свет на то, как она работает.

precision = 8
scale = 6

точность - количество значащих цифр в числе, а шкала - количество значащих цифр после десятичной дроби

1 Ответ

0 голосов
/ 15 мая 2019

Это расширение даст вам конкретное значение для вашего единственного примера:

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 как можно дальше.

...