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

无法修正数组问题:decimal转int错误及代码问题求助

问题分析与修正方案

代码中的所有问题:

  • 数组初始化错误:new decimal[StockPrices] 中,StockPrices 是decimal数组,不能直接作为数组长度参数,应该使用数组的Length属性。但实际上统计负变动次数不需要数组,用一个整数计数器即可,这个数组完全多余。
  • 不必要的类型转换导致精度丢失:将decimal类型的价格差值强制转换为int,会丢失小数部分的精度。比如价格变动是-0.3,转成int后变成0,会被误判为非负变动,导致统计结果不准确。
  • 数组错误自增:negativeChange++ 中negativeChange是decimal数组,数组不能直接执行自增操作,这是语法错误。
  • 返回值类型不匹配:方法声明返回int类型,但最后返回的是decimal数组negativeChange,类型完全不兼容,编译报错。

修正后的代码:

public int FindNumTimesNegativePriceChange()
{
    // 用int计数器统计负变动次数,无需数组
    int negativeChangeCount = 0;

    for (int i = 0; i < StockPrices.Length - 1; ++i)
    {
        // 直接用decimal存储差值,保留精度
        decimal difference = StockPrices[i + 1] - StockPrices[i];

        if (difference < 0)
        {
            negativeChangeCount++;
        }
    }

    return negativeChangeCount;
}

修正说明:

  1. 移除了多余的decimal数组,改用int类型的negativeChangeCount作为计数器,直接统计负变动次数。
  2. 保留差值的decimal类型,避免强制转换导致的精度丢失,确保所有负的价格变动(包括小数部分)都能被正确识别。
  3. 对计数器执行自增操作,替代原数组的错误自增逻辑。
  4. 返回值改为计数器变量,与方法声明的int类型匹配,解决返回值类型不兼容问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 04:55:22