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

C#计算器除法无法正确显示小数问题排查求助

问题分析与修复方案

核心问题:除法分支逻辑错误

你的代码中,除法计算的逻辑被错误地放在了while (number2 == 0)循环内部:

case '/':
    while (number2 == 0)
    {
        Console.WriteLine("You can't devide by zero idiot");
        Console.WriteLine("Please input a valid option");
        number2 = Convert.ToDouble(Console.ReadLine());
        if (number2 == 0)
        {
            continue;
        }
        result = Math.Devide(number1, number2);
    }
    break;

当你输入的第二个数一开始就不是0(比如2),这个while循环根本不会执行,result始终保持初始值0,所以输出结果就是0.0000000000。

修复方法

将除法计算的代码移到while循环外部,让循环只负责处理除数为0的异常输入,确保无论初始值是否合法,都会执行除法计算:

case '/':
    while (number2 == 0)
    {
        Console.WriteLine("You can't divide by zero");
        Console.WriteLine("Please input a valid number:");
        number2 = Convert.ToDouble(Console.ReadLine());
    }
    result = Math.Devide(number1, number2);
    break;

其他需要修正的小问题

  1. 方法名拼写错误:

    • Substract 改为 Subtract
    • Devide 改为 Divide
      (属于规范问题,符合C#命名习惯和英文拼写规则)
  2. 重复输入判断的逻辑错误:
    在询问是否继续使用的部分,你读取用户输入后立刻清空了answer:

    answer = Console.ReadLine().ToUpper();
    answer = ""; // 这行直接清空输入,导致后续switch永远走default
    

    删掉answer = "";这行代码,才能正确判断用户输入的Y/N。

  3. 文字拼写错误:

    • "vailid opetion" 改为 "valid option"
    • 提示文字里的 "Devide" 统一改为 "Divide"

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 07:15:35