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。但这发生在我仍然使用<=而不是<< / p>时
答案 0 :(得分:0)
这可能是由于具有双值的近似性质。 double类型是不精确的浮点值。 0.01的两倍可能略大于0.01。 There is an excellent explanation here。
如果是这种情况,那么最后一次通过循环时,角度值会稍微大于0.58,再加上一个稍大于0.01的角度值将使其大于0.59并退出循环。
答案 1 :(得分:0)
详细了解相等性检查。在您的情况下,情况差不多。