在Flutter表达式中将弧度转换为度

3hvapo4f  于 2023-08-07  发布在  Flutter
关注(0)|答案(2)|浏览(121)

我有一个来自用户的输入表达式,其中可能有sin()cos()tan(),还有像sin(60 + cos(30))这样的多维函数。
我使用math_expression来计算表达式,但这个包使用弧度而不是度。如果我想使用度而不是弧度,我该怎么做?

uhry853o

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;
  }

个字符

相关问题