Как установить переключатель режима% в 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];