这是发生了什么:我输入一个数字,然后发生的是它只写出一个数字: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);
}
}
答案 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);