如果具有多个条件的函数没有返回正确的值 第 1 步:获取体重作为数字第 2 步:获取高度的平方值第 3 步:计算 BMI第 4 步:返回文本值

问题描述

我最近开始使用 Power Apps,我构建的第一个应用程序之一是体重指数 (BMI) 计算器。我能够将其设置为自动从公斤转换为磅,将厘米转换为英尺

我现在面临的问题是使用 SELECT SUM(CASE WHEN column IS NULL THEN 1 ELSE 0 END) AS column_null_tally FROM table; If 语句输出结果以显示 BMI 类别:

Switch

我打算使用的公式是

BMI Categories:
Underweight = <18.5
normal weight = 18.5–24.9
Overweight = 25–29.9
Obesity = BMI of 30 or greater

这是我使用的逻辑

BMI = 703* (weight/(Height^2))

解决方法

感谢您对if语句的帮助,错误是在解决了if语句后的计算。 正确的逻辑是

With(
    {res:Value(tx1.Text)/(Value(tx2.Text)^2)*10000},If(
        res>= 30,"Obese",res> 25 && res< 29.9,"Overweight",res> 18.5 && res< 24.9,"Normal",res<= 18.4,"Underweight"
      )
)

谢谢大家。

,

正确的解决方案

注意:我使用名称 WeightInputHeightInput 作为我的输入,它们的类型是文本输入。如果您的配置不同,您可以修改公式以获得正确类型的值。

注意:为了使过程清晰,我将为每个步骤使用单独的标签元素。然后我将通过标签名称访问上一步的值。

第 1 步:获取体重作为数字

公式 WeightInput.Text 返回文本值。我们需要使用 Value() function 将其转换为数字:

Value(WeightInput.Text)

我将其保存到名为 WeightData 的标签中。

第 2 步:获取高度的平方值

我们已经知道如何获取号码了。让我们通过添加 Power() function 重复相同的操作(在这种情况下,指数值为 2):

Power(Value(HeightInput.Text),2)

我将其保存到名为 SquaredWeight 的标签

第 3 步:计算 BMI

现在我们可以使用我们保存的标签并计算 BMI 值:

703*(WeightData/SquaredWeight)

我将其保存为 BMI。

第 4 步:返回文本值

现在,让我们创建另一个包含文本值的标签:

If(
    Value(BMI.Text) > 30,Value(BMI.Text) >= 24.5,Value(BMI.Text) > 18.5,Value(BMI.Text) < 18.5,"underweight"
)

注意条件的顺序。如果您以其他方式执行此操作,则对于大于 18.5 的所有值,您都会收到正常

这是因为在 If 函数中,第一个评估为 true 的条件会停止函数的执行

为什么现有的解决方案不起作用

我发现现有代码几乎没有问题。如果您按照上述步骤操作,您可以很容易地注意到其中的大部分内容,但我认为指出它们可能会很好:

  • 没有从文本到数字的转换
  • 错误使用多条件 If
  • 将数值与描述值混合

通过混合值来显示我的意思。在这里,您将描述性值保存到变量中:

Set(VarResult,If(tx1.Text/(tx2.Text^2)*703)=<18.5,"underweight")

然后您尝试将其与数值进行比较:

if(VarResult>18.5,"Normal")

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...