Невозможно преобразовать очень маленькое строковое значение в десятичное с NumberFormatter Swift4

Я пытаюсь преобразовать строку "0.0004131955" в десятичную / двойную / валюту с NumberFormatter. Это производит ноль.

Как конвертировать это?

Мой пример кода, как показано ниже:

let formatter = NumberFormatter()
formatter.locale = Locale.current
formatter.numberStyle = .currency
formatter.minimumFractionDigits = 1
formatter.maximumFractionDigits = 15
formatter.usesGroupingSeparator = true

//number is nil here
if let number = formatter.number(from: "0.0004131955") {
   let unitPrice = number.doubleValue        
}

Что я делаю неправильно?

2 ответа

Удалить валюту из numberStyle - скопировать на игровую площадку для тестирования

import UIKit
import PlaygroundSupport

let formatter = NumberFormatter()
formatter.locale = Locale.current
//formatter.numberStyle = .currency
formatter.minimumFractionDigits = 1
formatter.maximumFractionDigits = 15
formatter.usesGroupingSeparator = true

let number: NSNumber? = formatter.number(from: "0.0004131955")
let unitPrice: Double? = number?.doubleValue

HI @erdemgc для Number stlye Deciamal Ваш код работает нормально, вы можете проверить консоль на изображении ниже

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

Другие вопросы по тегам