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? Как я могу избежать этого, чтобы я мог положиться на математику очень маленьких чисел?

Спасибо

0 ответов

Другие вопросы по тегам