循环无法达到预期的终点

问题描述 投票:1回答:1
 double angle = .50, stop = .59;
            Console.WriteLine("  Angle   Sine     Cosine");
            while (angle <= stop)
            {
                CalculateSineAndCosine(angle, out sine, out cosine);
                Console.WriteLine($"{angle,6:F}{sine,10:F4}{cosine,9:F4}");
                angle += .01;
            }

最后一个循环仅达到0.58,而不是0.59。无法理解发生了什么。请帮忙。附言如果止损= 0.60,它将达到0.59。但这发生在我仍然使用<= not <

c# loops for-loop while-loop do-while
1个回答
0
投票

这可能是由于具有双值的近似性质。 double类型是不精确的浮点值。 0.01的两倍可能略大于0.01。 There is an excellent explanation here

© www.soinside.com 2019 - 2024. All rights reserved.