Как установить переключатель режима% в DDMathParser

Я пытаюсь использовать DDMathParser в своем приложении, и мне трудно заставить его работать с символом% в процентах, а не по модулю.

Вики советует следующее -

Знак% обычно интерпретируется как оператор по модулю. Тем не менее, DDMathParser.h определяет переключатель времени компиляции (DD_INTERPRET_PERCENT_SIGN_AS_MOD), который позволяет вам изменить его, чтобы он интерпретировался как процент I

Я добавил это определение в DDMathParser.h, но оно не сработало. выражения по-прежнему рассчитываются по модулю, и это не тот результат, который я хотел бы.

У кого-нибудь есть такой опыт, и вы знаете, как его настроить?

пожалуйста, порекомендуйте

3 ответа

Вы можете использовать следующее

[[DDMathOperatorSet defaultOperatorSet] setInterpretsPercentSignAsModulo:NO];

Я был в состоянии решить это. Прежде всего, вы должны добавить это в свой код, как упоминалось ранее:

[[DDMathOperatorSet defaultOperatorSet] setInterpretsPercentSignAsModulo:NO];

Однако затем вам также необходимо исправить ошибку в исходном коде DDMathParser. Я использовал последнюю доступную версию ObjectiveC источника от 10 ноября 2015 года здесь: https://github.com/davedelong/DDMathParser/releases/tag/objc, и ошибка в DDMathOperator.m

Где это говорит:

return OPERATOR(DDMathOperatorPercent, @[@"%"], BINARY, 0, LEFT);

измените это на:

return OPERATOR(DDMathOperatorPercent, @[@"%"], UNARY, 0, LEFT);

Вот и все - проценты рассчитывают хорошо потом.

Ссылка на github подразумевает, что вам нужно использовать строку и преобразовать ее в числовой тип, чтобы он работал. Так:

NSString * yourNumber = @"100 + 10%";

Теперь вы должны разобрать, что в подходящих для преобразования методах DDMathParser есть некоторые, предназначенные для разбора строк на числа.

ОБНОВЛЕНИЕ Проблема была создана для этого, и ответ здесь DDMathsParser

Я думаю [[DDMathOperatorSet defaultOperatorSet] setInterpretsPercentSignAsModulo:NO]; может быть, что вы хотите.

ДЛЯ ОТОБРАЖЕНИЯ ЦЕЛЕЙ

В iOS вы можете использовать %% для представления процентов в строке:

NSString *stringPercent = [NSString stringWithFormat: @"%d. Athletes should always give %d%%", calcString, calcString];
Другие вопросы по тегам