四舍五入小数

Rounding Decimal

NSDecimalNumber中有一个四舍五入的方法,即

let handler = NSDecimalNumberHandler(roundingMode: .plain, scale: 2, raiseOnExactness: false, raiseOnOverflow: false, raiseOnUnderflow: false, raiseOnDivideByZero: false)

let example: NSDecimalNumber = 1.345
let rounded: NSDecimalNumber = example.rounding(accordingToBehavior: handler)

现在我已经切换到 Decimal,它似乎没有像 NSDecimalNumber 那样的四舍五入方法。我应该将它转换为 NSDecimalNumber 并将其转换回 Decimal 只是为了四舍五入,还是有更好更优雅的方式来四舍五入 Decimal

编辑:做了一个更好的例子

很简单

let x = 1.23556789
let y = Int(round(x))
print(y)

Decimal在Swift3中成为了处理小数的一种简单简洁的方式,但是如果要控制一些舍入方式或者舍入尺度,就需要使用NSDecimal... 函数。

Foundation Functions

参见小数部分。

NSDecimalRound(_:_:_:_:)

var dexample: Decimal = 1.345
var drounded: Decimal = Decimal()
NSDecimalRound(&drounded, &dexample, 2, .plain)
print(drounded) //->1.35