C#Math.Ceiling围绕事件加倍…(500到501)(公式)
为什么把C#这个计算加起来呢?
500 – > 501
MessageBox.Show(Math.Ceiling(1 / (4 * 1 - 4 * 0.9) * 200).ToString());
回报。
--------------------------- --------------------------- 501 --------------------------- OK ---------------------------
我不知道为什么。
Excel也不这样做。
我需要天花板function,而返回500,而不是501。
我可以用它来代替。 但是,我会知道是否有另一个解决scheme,为什么C#这样做。
MessageBox.Show(Math.Ceiling(Math.Floor((1 / (4 * 1 - 4 * 0.9) * 200) * 100) / 100).ToString());
问题是由于使用浮点运算, 500
实际上不是 500
,而是500.0000000001
(或类似的东西)。
要解决这个问题,请使用decimal
而不是double
。
MessageBox.Show(Math.Ceiling(1.0M / (4.0M * 1.0M - 4.0M * 0.9M) * 200.0M).ToString());
请参阅每位计算机科学家应了解的有关浮点运算的更多信息,或者查看本网站以获得更简单的解释。