C#>>一些数字被弄乱了

时间:2018-11-10 16:02:15

标签: c#

这是发生了什么:我输入一个数字,然后发生的是它只写出一个数字:324,就像变量c无缘无故地得到了这个值。

class Program
{
    static void Main(string[] args)
    {
        Console.WriteLine("enter a number with change");
        double num = double.Parse(Console.ReadLine());
        num = (int)num;
        int c = 0;
        Console.WriteLine(num);
        while (num != 0)
        {
            num /= 10;
            c++;
        }
        Console.WriteLine(c);
    }
}

2 个答案:

答案 0 :(得分:9)

如果double可以代表每个实数,则该程序应该无限循环。假设您输入1。然后循环将其除以10,剩下0.1。由于0.1不等于0,因此循环将继续,导致0.01等。

double,但是只能支持大约5E-324的最小值,因此,如果得到的数字很小,并尝试将其除以10,则将得到零。

因此,您的程序循环执行约324次,并在获得足够小的数值后退出。

答案 1 :(得分:0)

尝试在循环内打印出num。您会看到它尝试无限除以10(这样的划分永远不会以0结尾),直到它不再容纳那么小的值,并且== 0将返回true

仅仅因为您通过使用num(int)num设置为四舍五入值并不意味着它的行为就像int一样,除法运算最终仍然是小数,如果需要,请使用int

Console.WriteLine("enter a number with change");
double num = double.Parse(Console.ReadLine());
int num2 = (int)num;
int c = 0;
Console.WriteLine(num2);
while (num2 != 0)
{
    num2 /= 10;
    c++;
}
Console.WriteLine(c);