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

C#中比较两个字符串列表元素,支持数值误差范围校验方案

C#实现答题答案比对(支持数值误差范围+安全类型转换)

核心思路

  • 用double.TryParse做安全数值转换,避免转换失败抛出异常
  • 对每一对答案执行以下逻辑:
    • 若两者都能成功转换为double,判断绝对值差≤0.1即视为正确
    • 若任意一方转换失败,直接比对字符串是否相等(可按需选择是否忽略大小写)

完整实现代码

using System;
using System.Collections.Generic;

class AnswerChecker
{
    static void Main(string[] args)
    {
        List<string> givenAnswers = new List<string>()
        {
            "True","False","True","False","True",
            "60","50","2.321","0.8","1.55"
        };

        List<string> correctAnswers = new List<string>()
        {
            "True","False","False","True","False",
            "70","20","1.231","0.5","1.25"
        };

        // 遍历比对每一组答案
        for (int i = 0; i < givenAnswers.Count; i++)
        {
            bool isCorrect = IsAnswerCorrect(givenAnswers[i], correctAnswers[i]);
            Console.WriteLine($"第{i+1}题:用户答案「{givenAnswers[i]}」,正确答案「{correctAnswers[i]}」,判定结果:{(isCorrect ? "正确" : "错误")}");
        }

        Console.ReadLine();
    }

    /// <summary>
    /// 校验单个答案是否正确
    /// </summary>
    /// <param name="givenAnswer">用户提交的答案</param>
    /// <param name="correctAnswer">标准答案</param>
    /// <returns>是否正确</returns>
    static bool IsAnswerCorrect(string givenAnswer, string correctAnswer)
    {
        // 尝试将两个答案转换为double
        if (double.TryParse(givenAnswer, out double givenNum) && double.TryParse(correctAnswer, out double correctNum))
        {
            // 数值型答案:判断是否在0.1误差范围内
            return Math.Abs(givenNum - correctNum) <= 0.1;
        }
        else
        {
            // 非数值型答案(如判断题):忽略大小写比对字符串,需严格匹配可改为StringComparison.Ordinal
            return string.Equals(givenAnswer, correctAnswer, StringComparison.OrdinalIgnoreCase);
        }
    }
}

关键细节说明

  • double.TryParse:C#中安全转换数值的标准方法,不会抛出异常,通过返回值判断转换是否成功,同时通过out参数输出转换后的数值
  • 误差范围判定:使用Math.Abs确保正负方向的误差都被覆盖,比如正确答案22.5时,22.4和22.6都会被判定为正确
  • 字符串比对:StringComparison.OrdinalIgnoreCase可以兼容用户输入的大小写差异(如"true"匹配"True"),如果需要严格区分大小写,替换为StringComparison.Ordinal即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 08:50:24