NSDecimalNumber и выскакивающие цифры из конца - PullRequest
0 голосов
/ 09 октября 2010

Я не совсем уверен, как это назвать, но у меня есть текстовое поле для хранения значения валюты, поэтому я сохраняю его как NSDecimalNumber.Я не хочу использовать клавиатуру цифр и символов, поэтому я использую цифровую клавиатуру и определяю местоположение десятичного знака, как это делают банкоматы.Хорошо работает для ввода чисел.Наберите 1234, и он отобразит $ 12,34, но теперь мне нужно реализовать пробел.Таким образом, если предположить, что введено $ 12,34, то после пробела вернется $ 1,23.Я не совсем уверен, как это сделать с десятичным числом.С помощью int вы просто делите на 10, чтобы удалить самую правую цифру, но это, очевидно, здесь не работает.Я мог бы сделать это путем некоторого грязного преобразования в int / 10, а затем обратно в десятичную, но это звучит просто ужасно ... Есть предложения?

Ответы [ 2 ]

3 голосов
/ 09 октября 2010

Звоните - (NSDecimalNumber *)decimalNumberByDividingBy:(NSDecimalNumber *)decimalNumber withBehavior:(id < NSDecimalNumberBehaviors >)behavior на нем

0 голосов
/ 21 октября 2016

Как насчет использования stringValue?

1) NSDecimalNumber to String

2) подстрока последняя

3) String to NSDecimalNumber


Нижепример Swift 3

func popLastNumber(of number: NSDecimalNumber) -> NSDecimalNumber {

  let stringFromNumber = number.stringValue //NSNumber property

  let lastIndex = stringFromNumber.endIndex
  let targetIndex = stringFromNumber.index(before: lastIndex)
  let removed = stringFromNumber.substring(to: targetIndex)

  return NSDecimalNumber(string: removed)
}

Если ваш входной номер представляет собой одну цифру, он вернет NaN.

Вы можете заменить его на NSDecimalNumber.zero, если вам нужно.

Может работать как кнопка удаления на калькуляторе.


Это не очень проверено.

Если кто-то обнаружил другое дело NaN, пожалуйста, сообщите об этом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...