Numberformatter没有舍入。 Xcode中的一个行为在操场上另一个行为

时间:2017-01-02 11:34:56

标签: swift nsnumberformatter

我使用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

但它们对我的项目没有影响。

关于为什么会发生这种情况的任何想法?

1 个答案:

答案 0 :(得分:0)

您需要使用圆形功能。

假设你需要两位数的精度。然后你需要乘以100,然后将其四舍五入,然后将结果除以100。

let a = 5.9999
let b = Double(round(100*a)/100)
print(b)  //Output will be 6.0