NSDecimalNumber Math Ошибка в глубоких десятичных числах
У меня есть расширение Swift на NSDecimalNumber
:
extension NSDecimalNumber {
var asRawValue: NSDecimalNumber {
return self.multiplying(byPowerOf10: 30)
}
}
И тест:
let t = NSDecimalNumber(value: 335).asRawValue
let u = NSDecimalNumber(value: 0.00001).asRawValue
// fails
XCTAssert(t.subtracting(u).compare((NSDecimalNumber(value: 334.99999)).asRawValue) == .orderedSame)
// console
po NSDecimalNumber(value: 334.99999).asRawValue
334999990000000051200000000000000
Почему в длинном хвосте нулей моего NSDecimalNumber есть случайные 512? Как я могу избежать этого, чтобы я мог положиться на математику очень маленьких чисел?
Спасибо