PowerShell判断数值是否在范围内出错求助
问题根源及修复方案
核心错误点
- 类型不匹配:你定义的
$RX_Val和$TX_Val是字符串类型(带引号的"-2.7"),而-1..-4生成的是整数数组(-1, -2, -3, -4)。字符串与整数无法直接匹配,因此-in运算符返回False。 - 范围逻辑错误:
-1..-4生成的是整数序列,但你的目标值是小数(-2.7、-3.4)。即便转成数值类型,这些小数也不在该整数数组内——你实际需要判断的是「数值是否处于-4到-1的区间」,而非是否等于数组中的整数元素。 - 布尔值判断冗余:将布尔值转为字符串再判断
'False'完全没必要,直接用原生布尔逻辑判断更简洁规范。
修复后的代码
# 直接定义为数值类型,去除引号 $RX_Val = -2.7 $TX_Val = -3.4 # 判断数值是否在[-4, -1]区间内(包含边界) $RX_Bool = $RX_Val -ge -4 -and $RX_Val -le -1 $TX_Bool = $TX_Val -ge -4 -and $TX_Val -le -1 # 直接使用布尔逻辑判断 if (-not $RX_Bool -or -not $TX_Bool) { $RXTX_Data | Out-File -FilePath "E:\Port_$file_name" -Force }
补充说明
如果$RX_Val和$TX_Val必须从字符串来源获取(比如读取文本),可先转换为数值类型再判断:
# 字符串转数值类型 $RX_Val = [double]"-2.7" $TX_Val = [double]"-3.4"
内容的提问来源于stack exchange,提问作者snehasish nandy
相关产品推荐
相关产品推荐

