负字符串执行十进制nsnumber

时间:2016-02-24 13:40:03

标签: ios string swift double nsnumber

我试图将String转换为十进制Double或NSNumber。

继承我的字符串:

"-2000" or "2000"

应该成为:

-20.00 or 20.00

已经尝试过:

print("NSNumber \(NSNumberFormatter().numberFromString(amount)!.decimalValue)")
print("Double \(Double(amount))")

但是当它的负数返回为零时,或者当它的正数在逗号后面只返回一个数字时。

3 个答案:

答案 0 :(得分:1)

var amount = "-2000"  // String
var doubleNumber = Double(amount / 100)! // Double
var stringWithFormat = NSString(format: "formatted number %.2f", doubleNumber) // to get String with your format

变量为Double时。 -20.0和-20.00是相同的值。 仅当变量为字符串“-20.0”且“-20.00”不同时

答案 1 :(得分:0)

快速将String转换为NSNumber,然后在逗号

后打印2个数字
let value = "-2000"
let f = NSNumberFormatter()
f.numberStyle = .DecimalStyle      
let n = f.numberFromString(value)!
NSLog("%.2f", n.floatValue)

答案 2 :(得分:0)

你可以做到

Double(("-2000" as NSString).doubleValue / 100)

我会为那个

创建一个简单的扩展名(String + decimalPrice.swift)
extension String {
    var decimalPrice: Double {
        return (self as NSString).doubleValue / 100
    }
}

let price = "-999".decimalPrice
print(price) # -> -9.99