Search code examples
swiftswift3nsnumberformatter

NumberFormatter rounding unexpectedly


Here is a code I use for adding commas:

extension String
{
    func addCommas() -> String
    {
        var result = String(self)

        let numberFormatter = NumberFormatter()
        numberFormatter.numberStyle = NumberFormatter.Style.decimal
        let number = NSNumber(value:Float64(result)!)
        result = numberFormatter.string(from: number)

        return result!
    }
}

Then I set e.g. "1000".addCommas() then it returns fine "1,000" but when I set the number "1.1234".addCommas() then it returns "1.123" Seems it rounds the number. How to resolve the issue above?


Solution

  • You can achieve this by using NumberFormater, something like this.

    let value = 1000
    let formater = NumberFormatter()
    formater.numberStyle = .decimal
    formater.groupingSeparator = ","
    print(formater.string(from: NSNumber(integerLiteral: value)) ?? "Return nil value")
    

    Apple docs are available here