负字符串做小数 nsnumber

Negative String do decimal nsnumber

我正在尝试将 String 转换为十进制 Double 或 NSNumber。

这是我的字符串:

"-2000" or "2000"

应该变成:

-20.00 or 20.00

已经尝试过:

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

但是当它的负数 return 为零,或者当它的正数 return 逗号后只有一个数字。

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”不同

将字符串转换为 NSNumber 然后在逗号后打印 2 个数字的快速方法

let value = "-2000"
let f = NSNumberFormatter()
f.numberStyle = .DecimalStyle      
let n = f.numberFromString(value)!
NSLog("%.2f", n.floatValue)

你可以做到

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