如何解决如果具有多个条件的函数没有返回正确的值 第 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"
)
)
谢谢大家。
,正确的解决方案
注意:我使用名称 WeightInput
和 HeightInput
作为我的输入,它们的类型是文本输入。如果您的配置不同,您可以修改公式以获得正确类型的值。
注意:为了使过程清晰,我将为每个步骤使用单独的标签元素。然后我将通过标签名称访问上一步的值。
第 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")
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。