使用for循环生成decimal类型数组触发CS0266错误的问题咨询
错误原因与修复方案
报错直接原因
- C#中数组索引必须为
int类型,你代码中的循环变量f是decimal类型,直接用f作为下标访问increment_Num数组,就会触发类型无法隐式转换的CS0266错误。
逻辑设计错误
- 循环变量的步进逻辑设计错误:你将步进值设为了
Steps_Num(即0.02),会导致f的取值为0、0.02、0.04这类小数,本身就不适合作为数组下标,也无法正确生成你需要的递增序列。
修复后代码
// 第一步:将字符串转换为decimal类型值 decimal Start_Num = decimal.Parse("1.60"); decimal Stop_Num = decimal.Parse("1.70"); decimal Steps_Num = decimal.Parse("0.02"); // 第二步:计算总点数并转换为int类型 decimal steps = (Stop_Num - Start_Num) / Steps_Num; int steps_int = (int)decimal.Ceiling(steps); // 第三步:通过for循环生成数组 decimal[] increment_Num = new decimal[steps_int + 1]; // 改用int类型作为循环下标 for (int i = 0; i < steps_int + 1; i++) { increment_Num[i] = Start_Num + i * Steps_Num; }
运行上述代码得到的increment_Num数组即为你预期的[1.60,1.62,1.64,1.66,1.68,1.70]。
内容的提问来源于stack exchange,提问作者Visky2212
相关产品推荐
相关产品推荐

