c#:while while循环不起作用

Ash*_* P. 1 c# windows do-while

这个程序应该适用于这个条件,至少我认为,但是对于某些值,它并没有像预期的那样工作.

static void Main(string[] args)
{
    double num, temp = 0;
    double frac;
    int j = 1;

    num = 1034.264;            
    do
    {
        j = j * 10;
        Console.WriteLine(j);
        temp = num * j;
        Console.WriteLine(temp);
    }
    while ((temp % 10)!=0);
}
Run Code Online (Sandbox Code Playgroud)

价值1034.347,其工作正常 -

为1034.347工作

但是对于价值1034.235 不能正常工作1034.235, 这将是无限的

Bat*_*eba 9

C# - 为了跟上Joneses - 有一个浮点模数运算符 %.

当表示为十进制数时,结果二进制浮点值不太可能将其所有尾随数字设置为零,因此(temp % 10)!=0)false是罕见的.

在您的情况下,一种解决方法是使用1000个值的因子,并使用适当的整数类型.

参考:浮点数学是否破碎?