формат валюты - удалить десятичные дроби - PullRequest
0 голосов
/ 27 июня 2018

Мне нужно перевести из центов в евро

{
ref: "1dsdsd",
title: "XXXXXX",

price: 92820
},
{
ref: "2ddsds",
title: "XXXXXX",

price: 12830
},
{
ref: "3dsds",
title: "XXXXXXX",
price: 885
} 
]

если значение составляет 885 центов, мы должны прочитать 8,85 евро, но значения, возвращаемые веб-сервисом, не согласованы: 2, 3, 5 цифр

мое решение не позволяет вернуть значение в евро, удалив лишние десятичные дроби

extension Int {
    func format() -> String {
        let double = Double(self) / 100
        return String(format: "€ %.02f", double)
    }

}

введите описание изображения здесь

1 Ответ

0 голосов
/ 28 июня 2018

Не пытайтесь делать это с вашим собственным кодом, так как слишком много переменных, чтобы их учитывать. Вместо этого используйте NumberFormatter, установите для numberStyle подходящий вам стиль валюты.

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

Ваши значения в целых центах, хороший выбор для валютных значений, к сожалению, NumberFormatter ожидает, что единица будет в евро (или фунтах и ​​т. Д.). Вы можете решить эту проблему двумя способами: (а) предварительно разделить число на 100 перед передачей его в форматтер или (б) установить для свойства multiplier средства форматирования значение 0.01 ( Примечание: в этом последнем случае вы должны передайте число, которое будет отформатировано как число с плавающей точкой (например, Double), иначе центы будут обрезаны, это особенность / ошибка NumberFormatter)

...