小智 5
如果您正在寻找简单的数学字符串,您可以借助一个名为的包来计算它们
首先安装这个包。将其添加到您的项目中,然后实现此代码。
import 'dart:math';
import 'package:petitparser/petitparser.dart';
Parser buildParser() {
final builder = ExpressionBuilder();
builder.group()
..primitive((pattern('+-').optional() &
digit().plus() &
(char('.') & digit().plus()).optional() &
(pattern('eE') & pattern('+-').optional() & digit().plus())
.optional())
.flatten('number expected')
.trim()
.map(num.tryParse))
..wrapper(
char('(').trim(), char(')').trim(), (left, value, right) => value);
builder.group()..prefix(char('-').trim(), (op, a) => -a);
builder.group()..right(char('^').trim(), (a, op, b) => pow(a, b));
builder.group()
..left(char('*').trim(), (a, op, b) => a * b)
..left(char('/').trim(), (a, op, b) => a / b);
builder.group()
..left(char('+').trim(), (a, op, b) => a + b)
..left(char('-').trim(), (a, op, b) => a - b);
return builder.build().end();
}
double calcString(String text) {
final parser = buildParser();
final input = text;
final result = parser.parse(input);
if (result.isSuccess)
return result.value.toDouble();
else
return double.parse(text);
}
Run Code Online (Sandbox Code Playgroud)
现在只需调用这个函数calcString,您就会得到所需的答案。请记住,如果给定的字符串有效,它只会返回计算值,否则会抛出错误。
| 归档时间: |
|
| 查看次数: |
4583 次 |
| 最近记录: |