1

我尝试使用 NumberFormatter 将字符串“0.0004131955”转换为十进制/双精度/货币。它产生零。

如何转换它?

我的示例代码如下:

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        
}

我究竟做错了什么?

4

2 回答 2

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

在此处输入图像描述

于 2018-01-03T16:05:13.530 回答
0

嗨@erdemgc for Number stlye Deciamal 你的代码对我来说工作正常你可以在下图中检查控制台在此处输入图像描述

对于货币,您必须为您指定货币样式格式示例我附上图片请看下面的描述 在此处输入图像描述

于 2018-01-03T16:13:18.150 回答