在 Canvas 应用程序中求解数学方程式(字符串)

Solve Math Equation(string) in Canvas App

我有一个动态公式需要计算。

这是一个示例 (var1 * var2) / (var3 * (23 * 100))

这些变量将被替换为实际数字,因为它们是用户输入的。目前,我正在使用连接到我的网络 API 的 power automate flow 来抛出任何计算并解决它。然后发回结果。我在 API.

上使用 NCalc and/or DataTable

我希望做的是在标签或文本等任何控件中传递计算。如果将 1+1 放入标签控件的文本 属性。它会立即显示数字 2,但由于我传递的是字符串,所以它不起作用。我可以使用类似 Value("100" * "300") 这样的东西,只要我们只坚持使用数学运算符,它就可以工作,但是当我们有这样的左括号和右括号时,它就会失败 (21 * 100) / (0.43 * ( 23 * 100))

如果您有解决方法,我将不胜感激。提前谢谢你。

您可以在不使用 Power Automate 的情况下使用变量处理所有计算。

示例:

创建一个 TextInput 并在 'onChange' 函数中插入

Set(var1;Value(TextInput1.Text))

创建第二个 TextInput 并在 'onChange' 函数中插入

Set(var2;Value(TextInput2.Text))

创建标签并在文本函数中插入

var1 + var2

每次您更改 TextInputfields 中的值时,Label 都会更新。

这只是一个简单的例子。随函附上我的一项计算,它写在包含括号的文本字段的文本 属性 中:

Round((var_Moment - (var_FuelArm * Slider_Fuel.Value)) / (var_GM -Slider_Fuel.Value );0) & " mm"

它不仅适用于变量,也适用于其他控件的表达式。

因为你传递的是字符串,所以你必须将它们转换为值并将它们分配给变量。

Set(var1;Value(your String Value))

这就是重点,我试图在我的第一个回答中强调。

这是一个希望对您有用的解决方案,它使用免费 mathjs API 来执行计算。 PowerApps 通过按钮触发器将用户输入发送到 PowerAutomate 流。

应用演示:

PowerAutomate 流程步骤:

  1. PowerApps 触发器
  2. 初始化变量 -> 值:“在 PowerApps 中询问”
  3. HTTP
  4. 响应 PowerApp 或流 -> 值:正文('HTTP')['Body']

PowerApps Button 属性 OnSelect 创建一个变量并使用用户输入作为参数触发流程以接收响应:

UpdateContext({ var_Result: PowerAppsHTTPRequestCalculation.Run(tb_Input.Text).result})

PowerApps Text Label 属性 Text 显示结果值:

var_Result

我最终通过使用 PCF 控件解决了这个问题,因为它允许使用 JavaScript 我可以简单地使用 eval 函数并求解你抛给它的任何方程。

更多信息在这里:https://docs.microsoft.com/en-us/powerapps/developer/component-framework/create-custom-controls-using-pcf