我把小数部分分开了,但是现在我需要用Int
来表示这个部分。
例如:
0.5 -> 5
0.63 -> 63
let a1 = 2.5
let a2 = 7.63
let a3 = 8.81
let a4 = 99.0
let a1Frac = a1.truncatingRemainder(dividingBy: 1)
let a2Frac = a2.truncatingRemainder(dividingBy: 1)
let a3Frac = a3.truncatingRemainder(dividingBy: 1)
let a4Frac = a4.truncatingRemainder(dividingBy: 1)
发布于 2022-01-30 00:08:39
首先,如果要保持小数位的精度,应该使用Swift Decimal
类型。其次,要获得它的分数值,可以检查这个post。一旦你有了你的小数,你所需要的就是得到它们的意义和价值:
extension Decimal {
func rounded(_ roundingMode: NSDecimalNumber.RoundingMode = .bankers) -> Decimal {
var result = Decimal()
var number = self
NSDecimalRound(&result, &number, 0, roundingMode)
return result
}
var whole: Decimal { self < 0 ? rounded(.up) : rounded(.down) }
var fraction: Decimal { self - whole }
}
let a1 = Decimal(string: "2.5")!
let a2 = Decimal(string: "7.63")!
let a3 = Decimal(string: "8.81")!
let a4 = Decimal(string: "99")!
let a1Frac = a1.fraction // 0.5
let a2Frac = a2.fraction // 0.63
let a3Frac = a3.fraction // 0.81
let a4Frac = a4.fraction // 0
let a1significand = a1Frac.significand // 5
let a2significand = a2Frac.significand // 63
let a3significand = a3Frac.significand // 81
let a4significand = a4Frac.significand // 0
如果需要将Decimal
值转换为Int
,只需将其转换为NSDecimalNumber
并获取其intValue
,或者将这些扩展添加到项目中,以便将相同的NSDecimalNumber
功能添加到Swift Decimal
类型:
extension Decimal {
var decimalNumber: NSDecimalNumber { self as NSDecimalNumber}
var intValue: Int { decimalNumber.intValue }
}
a1significand.intValue // 5
a2significand.intValue // 63
a3significand.intValue // 81
a4significand.intValue // 0
https://stackoverflow.com/questions/70910525
复制相似问题