Десятичные дроби в Swift

Я пишу приложение Swift и имею дело с десятичными знаками в базе данных (хранится в mysql как десятичные знаки, с 2 цифрами. В основном это продажи, которые кто-то делал каждый день, поэтому обычно что-то от $0 до $1000, но не миллионы, и ничего безумного с точки зрения конечных десятичных знаков, просто всегда округляется до 2 десятичных знаков).

ссылка на это помогла мне: Как правильно форматировать валюту на ios

..Но я просто хотел сделать быструю проверку здравомыслия здесь и убедитесь, что эта стратегия хорошо. я.е я бы использовал NSDecimal или NSDecimalNumber (есть предпочтительный Свифт аналог??)

Что бы вы все рекомендовали мне делать при работе с валютой в Swift? Я также хотел бы использовать символ валюты на основе локали. У меня есть класс Sales, который содержит указанную сумму. Какой тип данных вы рекомендуете использовать?

извинения, если я отрываюсь ленивый, у меня на самом деле есть некоторые идеи о том, что делать, но чувствую себя немного перегруженным "правильный" подход, особенно с учетом локали, и хотел проверить здесь со всеми вами.

спасибо!

2 ответов


обновление для Swift 3: A Decimal тип теперь доступен со встроенной поддержкой операторов, таких как *, /, +, <, etc. При использовании в любом контексте (переданном Objective-C), он соединяется с NSDecimalNumber.


ответ:

NSDecimal на самом деле не поддерживается в Swift (это странный непрозрачный тип указателя), но NSDecimalNumber is - и как в Obj-C, это лучшее, что можно использовать для базы-десять арифметика (потому что она фактически выполняет свои операции в базе десять). NSLocale, NSNumberFormatter и друзья все работают слишком и должны удовлетворять ваши потребности локализации.


Swift 3 теперь имеет тип Decimal (value), который соединен с nsdecimalnumber.