舍入十进制

时间:2016-09-24 09:39:18

标签: decimal swift3 nsdecimalnumber

NSDecimalNumber中,有一种方法来舍入数字,I.E。

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

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

2 个答案:

答案 0 :(得分:0)

这很简单

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

答案 1 :(得分:0)

Decimal已成为处理Swift 3中十进制数的简单方法,但如果要控制某些舍入模式或舍入比例,则需要使用NSDecimal...函数。

Foundation Functions

参见小数部分。

NSDecimalRound(_:_:_:_:)

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