Проблема с быстрыми расширениями и числовыми форматами - PullRequest
0 голосов
/ 20 апреля 2019

Я пытаюсь отформатировать текстовое поле метки так, чтобы его текст печатал только значения с определенным количеством значащих цифр.Я использую функциональные возможности расширения Swift и класс NumberFormatter , но, хотя код соответствует требованиям без ошибок, нужная мне функциональность (т.е. максимум 6 значащих цифр) не реализуется.

Вот мой код расширения:

extension Double {
    func formatNumbers() -> String {
        let numberFormat = NumberFormatter()
        let number = NSNumber(value: self)
        numberFormat.usesSignificantDigits = true
        numberFormat.minimumFractionDigits = 0
        return String(numberFormat.string(from: number) ?? "")
    }

}

А вот когда я вызываю метод расширения:

ConsoleValue.text! = "\(tempResult.formatNumbers())"

, где ConsoleValue - это UILabel и tempResult - это Double var .

Может ли кто-нибудь помочь мне с тем, что я делаю неправильно?

1 Ответ

0 голосов
/ 20 апреля 2019

Чтобы задать максимальное количество значащих цифр, используйте свойство maximumSignificantDigits:

numberFormat.maximumSignificantDigits = 6

Согласно этой википедии статья , значимаяцифры:

  • Все ненулевые цифры значимы: 1, 2, 3, 4, 5, 6, 7, 8, 9.
  • Нули между незначат ноль цифр: 102, 2005, 50009.
  • Ведущие нули никогда не значимы: 0,02, 001,887, 0,000515.
  • В числе с десятичной точкой - завершающие нулисправа от последней ненулевой цифры) значимы: 2,02000, 5,400, 57,5400.
  • В числе без десятичной точки завершающие нули могут быть или не быть значимыми.Для уточнения значения конечных нулей требуется больше информации через дополнительные графические символы или явную информацию об ошибках.
...