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

C#中整数除法导致结果为0的异常问题求助

问题解决:C#程序输出比值为0的原因及修复方案

核心问题

你输入1、2、3、4、5后得到比值0,是因为整数除法的截断特性:

  • 偶数总和是2+4=6,奇数总和是1+3+5=9
  • 代码里evennumber和oddnumber都是int类型,6/9作为整数运算会直接舍弃小数部分,结果为0,再赋值给float类型的ratio就变成0.0

代码错误点及修复

  1. 除法运算错误:
    原代码中ratio = evennumber/oddnumber; 两个int相除结果还是int,需要将其中一个操作数强制转为浮点数,让运算按浮点数规则执行:

    ratio = (float)evennumber / oddnumber;
    
  2. 字符串拼接语法错误:
    原代码Console.WriteLine("Enter" + i ". number : "); 缺少加号,会导致编译失败,修正为:

    Console.WriteLine("Enter " + i + " . number : ");
    

修正后的完整代码

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Project3
{
    internal class Program
    {
        static void Main(string[] args)
        {
            //variable assigment
            int evennumber = 0;
            int oddnumber = 0;
            float ratio;
            //its for get numbers
            for(int i = 1; i <= 5; i++)
            {
                Console.WriteLine("Enter " + i + " . number : ");
                int number=Convert.ToInt32(Console.ReadLine());
                 //its for determine even and odd number
                if (number%2 == 0)
                {
                    evennumber = evennumber + number;
                }
                else
                {
                    oddnumber = oddnumber + number;
                }

            }
            
             ratio = (float)evennumber / oddnumber;
            Console.WriteLine("Ratio : " + ratio);

            Console.Read();
        }
    }
}

补充说明

C#中不同数值类型运算时,会遵循类型提升规则:当整数和浮点数运算时,整数会自动转为浮点数,运算结果也是浮点数。所以只要把其中一个int变量转为float,就能得到正确的小数比值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 18:06:19