我有一个来自用户的输入表达式,其中可能有sin(),cos()和tan(),还有像sin(60 + cos(30))这样的多维函数。我使用math_expression来计算表达式,但这个包使用弧度而不是度。如果我想使用度而不是弧度,我该怎么做?
sin()
cos()
tan()
sin(60 + cos(30))
umuewwlo1#
1弧度= 180°/π 1度=(1弧度 * π)/180https://www.rapidtables.com/convert/number/radians-to-degrees.html
uhry853o2#
你可以使用一个正则表达式函数在操作之前转换用户输入:
String replaceTrigFunctionsWithTransformation(String input) { final RegExp trigFunctionRegex = RegExp(r'(sin|cos|tan)\(([^)]+)\)'); String result = input; for (Match match in trigFunctionRegex.allMatches(input)) { final originalMatch = match.group(0); // e.g., sin(45) final trigFunction = match.group(1); // e.g., sin final innerExpression = match.group(2); // e.g., 45 if (originalMatch != null && trigFunction != null && innerExpression != null) { // Replace sin(45) with sin((pi/180)*(45)) final transformedExpression = '$trigFunction((π/180)*(${innerExpression.trim()}))'; result = result.replaceFirst(originalMatch, transformedExpression); } } return result; }
个字符
2条答案
按热度按时间umuewwlo1#
1弧度= 180°/π 1度=(1弧度 * π)/180
https://www.rapidtables.com/convert/number/radians-to-degrees.html
uhry853o2#
你可以使用一个正则表达式函数在操作之前转换用户输入:
个字符