四舍五入小数
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...
函数。
参见小数部分。
var dexample: Decimal = 1.345
var drounded: Decimal = Decimal()
NSDecimalRound(&drounded, &dexample, 2, .plain)
print(drounded) //->1.35
在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...
函数。
参见小数部分。
var dexample: Decimal = 1.345
var drounded: Decimal = Decimal()
NSDecimalRound(&drounded, &dexample, 2, .plain)
print(drounded) //->1.35