Абсолютное значение (брюшной пресс) NSDecimalNumber без потери точности

Проблема в том, что pyinstaller не работает с новой версией jsonschema. В nauta уже есть обходной путь https://github.com/IntelAI/nauta/commit/8806aaa87a25d17d89a9aa9062571620d63e2b48 , где require.txt форсирует jsonschema == 2.6.0 Пожалуйста, загрузите последнюю версию и попробуйте сборку снова.

21
задан mreith 10 May 2009 в 22:39
поделиться

1 ответ

Вы можете использовать встроенные функции класса NSDecimalNumber для сравнения числа с нулем, а затем умножить его на -1, если необходимо. Например:

- (NSDecimalNumber *)abs:(NSDecimalNumber *)num {
    if ([num compare:[NSDecimalNumber zero]] == NSOrderedAscending) {
        // Number is negative. Multiply by -1
        NSDecimalNumber * negativeOne = [NSDecimalNumber decimalNumberWithMantissa:1
                                                                          exponent:0
                                                                        isNegative:YES];
        return [num decimalNumberByMultiplyingBy:negativeOne];
    } else {
        return num;
    }
}

Поскольку этот метод работает только с NSDecimalNumbers, нет потери точности.

28
ответ дан 29 November 2019 в 20:21
поделиться
Другие вопросы по тегам:

Похожие вопросы: