let formatter = NumberFormatter() let sample1 = formatter.number(from: "29.99") ---> 29.99 let sample2 = formatter.number(from: "79.99") ---> 79.98999999999999
但我希望得到79.99作为sample2的结果尝试使用不同的舍入模式,但没有帮助
79.99
nx7onnlm1#
发生这种情况是因为Floating Point Number。您可以看到here中的FPN是什么如果你需要2位小数的舍入,你可以使用link扩展名
Floating Point Number
extension NSNumber { func rounded(to decimalPlaces: Int) -> Double { let multiplier = pow(10, Double(decimalPlaces)) return (Double(truncating: self) * multiplier).rounded(.toNearestOrEven) / multiplier } } let sample1 = formatter.number(from: "29.99")?.rounded(to: 2) --> will be Optional(29.99) let sample2 = formatter.number(from: "79.99")?.rounded(to: 2) --> will be Optional(79.99)
1条答案
按热度按时间nx7onnlm1#
发生这种情况是因为
Floating Point Number
。您可以看到here中的FPN是什么如果你需要2位小数的舍入,你可以使用link扩展名