首页 > 解决方案 > 为什么我的代码中的“%”会产生另一个数字,而不是我自己计算时得到的数字?

问题描述

我有我的代码让我得到输入数字的位数。但是,如果我手动拨号,我会得到另一个...

让我们取 125 并 - 例如 - 将其调整为 10。我们甚至将它放在一个 while 循环中,让我们的数字每轮除以 10。我们得到:

125%10 -> 5
12,5%10 -> 2,5
1,25%10 -> 1,25

我们的总和是 8,75。但是如果我使用下面的代码,我们会得到 8。

有谁知道为什么会如此不同?

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

namespace EvenOrOdd
{
    class Program
    {
        static void Main(string[] args)
        {
            int num, sum = 0, r;
            Console.WriteLine("\nEnter a Number : ");
            num = int.Parse(Console.ReadLine());
            while (num != 0)
            {
                r = num % 10;
                num = num / 10;
                sum = sum + r;
            }
            Console.WriteLine("Sum of Digits of the Number : " + sum);
            Console.ReadLine();
        }
    }
}

标签: c#modulo

解决方案


您应该使用浮点类型,例如 float 或 double。不能容纳数字“ int8.75”。

只需intdoubleor替换float它就可以了。


推荐阅读