You need to enable JavaScript to run this app. C#如何从动态更新的currentResult变量获取历史最大值与最小值
优惠活动
大模型
产品
解决方案
定价
更多

C#如何从动态更新的currentResult变量获取历史最大值与最小值

动态currentResult正负极值实时跟踪实现方案

核心思路

不需要存储任何历史取值,仅靠两个固定的极值变量,在每次currentResult更新的节点做即时比较即可,全程内存占用固定为几个double类型变量,哪怕qty1、qty2高频变动,性能开销也可以忽略。

具体实现步骤

  • 极值变量初始化,避开默认0值的逻辑偏差:
    • maxResult(存储历史最大正值)初始赋值为double.NegativeInfinity,保证首次遇到正值时能正常完成比较更新
    • minResult(存储历史最小负值)初始赋值为double.PositiveInfinity,保证首次遇到负值时能正常完成比较更新
  • 统一拦截currentResult的更新节点:不管是qty1还是qty2接收到新值,都在重新计算得到最新currentResult的同一流程内,紧接着完成极值判断更新,不需要额外的复杂监听逻辑
    1. 对maxResult的判断:如果当前最新的currentResult是正值,且数值大于当前已存储的maxResult,就把maxResult更新为这个最新值
    2. 对minResult的判断:如果当前最新的currentResult是负值,且数值小于当前已存储的minResult,就把minResult更新为这个最新值

参考实现代码

// 原有业务变量定义
double qty1, qty2;
double currentResult;

// 极值跟踪变量,按极值反向边界初始化
double maxResult = double.NegativeInfinity;
double minResult = double.PositiveInfinity;

// 统一封装更新逻辑,qty1/qty2任意值变动时都调用该方法
private void SyncCalculation(double? newQty1 = null, double? newQty2 = null)
{
    // 接收传入的新qty值
    if (newQty1.HasValue) qty1 = newQty1.Value;
    if (newQty2.HasValue) qty2 = newQty2.Value;
    
    // 原有求和计算逻辑
    currentResult = qty1 + qty2;
    
    // 同步更新最大正值
    if (currentResult > 0 && currentResult > maxResult)
    {
        maxResult = currentResult;
    }
    // 同步更新最小负值
    if (currentResult < 0 && currentResult < minResult)
    {
        minResult = currentResult;
    }
}

逻辑验证(匹配给定示例)

按照示例的currentResult取值序列:7、-1、3、-8、10、-4、-11、15,走完整逻辑后极值变化完全符合预期:

  • 初始状态:maxResult=-∞,minResult=+∞
  • currentResult=7(正):maxResult更新为7,minResult保持不变
  • currentResult=-1(负):minResult更新为-1,maxResult保持不变
  • currentResult=3(正):3小于当前maxResult=7,maxResult不变
  • currentResult=-8(负):-8小于当前minResult=-1,minResult更新为-8
  • currentResult=10(正):10大于当前maxResult=7,maxResult更新为10
  • currentResult=-4(负):-4大于当前minResult=-8,minResult不变
  • currentResult=-11(负):-11小于当前minResult=-8,minResult更新为-11
  • currentResult=15(正):15大于当前maxResult=10,maxResult更新为15

边界情况说明

如果运行过程中从未出现过正值,maxResult会保持double.NegativeInfinity状态;如果从未出现过负值,minResult会保持double.PositiveInfinity状态。界面展示时可以基于这两个特殊值做判断,显示对应的空态提示即可,不会出现逻辑判断错误。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.11.03 20:24:00