NumberFormatter 意外舍入

NumberFormatter rounding unexpectedly

这是我用来添加逗号的代码:

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!
    }
}

然后我设置例如"1000".addCommas() 然后它 returns 很好 "1,000" 但是当我设置数字 "1.1234".addCommas() 然后它 returns "1.123" 似乎它四舍五入这个数字。如何解决上述问题?

您可以通过使用 NumberFormater 来实现,类似这样。

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

Apple 文档可用here