You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C#判断文本框十进制数值是否在指定范围功能失效问题求助

问题根因
  • 核心错误是用字符串比较替代数值比较:TxtFullScale.Text是字符串类型,直接用>=、<=、==判断时,是按逐字符的ASCII码顺序比较,不是按十进制数值的大小逻辑判断。你修改后的代码只写了两个固定字符串的相等判断,自然只能匹配3.0031、2.9970这两个固定输入,3.0032这类其他超范围值不会命中判断。
  • 原有代码的ToString用法完全错误:TxtFullScale.Text.ToString("3.0031")是无效写法,字符串类型的ToString方法不支持传入数值作为参数,你这里是想把3.0031、2.9970作为阈值和输入值比较,用错了API。
  • 你已经通过double.TryParse把输入转成了数值类型的value变量,直接用这个变量做数值区间判断即可,不需要绕回操作字符串。
修复后代码示例
double value = 0;
// 先校验输入是否是合法数值
if (!double.TryParse(TxtFullScale.Text, out value))
{
    MessageBox.Show("请输入合法的数值");
    return;
}
value /= 10000;
TxtCalFullScale.Text = string.Format("{0:#.0000}", value) + "  mV/V";

// 直接用解析后的数值做区间判断
const double upperLimit = 3.0030;
const double lowerLimit = 2.9970;
if (value > upperLimit || value < lowerLimit)
{
    MessageBox.Show("Full Scale value is in a non conformence state.");
}
额外注意

如果对精度要求很高,不建议用double类型,改用decimal类型做数值解析和比较,避免浮点精度误差。

内容的提问来源于stack exchange,提问作者Camp Nerd

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 06:06:02