我使用NumberFormatter
时会遇到一些奇怪的行为。
以下代码:
let str = "5.99"
let doub = Double(str)
let nsnum = NSNumber(floatLiteral: doub!)
let formatter = NumberFormatter()
formatter.numberStyle = .currency
formatter.locale = NSLocale(localeIdentifier: "da_DK") as Locale!
formatter.currencySymbol = ""
let forStr = formatter.string(from: nsnum)
在我的Xcode项目中运行时以及在playground.swift文件中运行时,不会返回相同的结果。
在操场上forStr
是" 5.99"在项目中forStr
是" 6"。操场上的行为是我追求的。
我尝试过添加:
formatter.maximumFractionDigits = 2
formatter.roundingMode = .down
但它们对我的项目没有影响。
关于为什么会发生这种情况的任何想法?
答案 0 :(得分:0)
您需要使用圆形功能。
假设你需要两位数的精度。然后你需要乘以100,然后将其四舍五入,然后将结果除以100。
let a = 5.9999
let b = Double(round(100*a)/100)
print(b) //Output will be 6.0