我确实尝试了不同的舍入到小数位的方法,所有这些都有相同的共同点。当我使用数字时,假设为0.99999,我想将其舍入到2位小数。我的预期结果是0.99,但我得到1.00
我确实尝试了
let divisor = pow(10.0, Double(decimals))
let roundedVal = round(value * divisor) / divisor
也尝试了
String(format:"%.2f",decimals)
并且
let behavior = NSDecimalNumberHandler(roundingMode: .plain, scale: decimals, raiseOnExactness: false, raiseOnOverflow: false, raiseOnUnderflow: false, raiseOnDivideByZero: true)
NSDecimalNumber(value: value).rounding(accordingToBehavior: behavior)
let roundedValue2 = NSDecimalNumber(value: 0.6849).rounding(accordingToBehavior: behavior)
所有方法都给我同样的问题。 一些想法?
感谢您的帮助!
编辑: 这个想法是对于所有情况都可以进行舍入,但对于0.9999的情况则不行。显示数字总是很小(范围从0.000到1),显示的小数是参数,所以0.348应该是0.35而不是0.34(当中继时)
答案 0 :(得分:1)
let amount = 0.99999999999999
let formatter = NumberFormatter()
formatter.numberStyle = .decimal
formatter.maximumFractionDigits = 2
formatter.roundingMode = .floor // rounding mode floor is the key here
let formattedAmount = formatter.string(from: amount as NSNumber)!
print(formattedAmount) // 0.99