我在一個應用程序中有一個相當奇怪的錯誤,我設法縮小到這個簡單的測試用例。布爾值在調試模式下比在發佈模式下有所不同
protected void Page_Load(object sender, EventArgs e)
{
bool isHeightExceeded = IsHeightExceeded(10.16f, 127.15f);
lit.Text = isHeightExceeded.ToString();
}
private bool IsHeightExceeded(float y, float height)
{
float nextHeight = y + height;
return (137.31f - nextHeight) < 0;
}
當我構建和調試模式下運行這個isHeightExceeded布爾是假的(如我所期望的),但是當我重建和在釋放模式運行,現在是真。
幕後發生了什麼事情?我猜測它與浮點精度有關,但不完全確定它是什麼。
任何幫助,將不勝感激。
試圖清理並重建您的解決方案? – 2012-08-07 10:26:08
打印結果137.31f - nextHeight並檢查。 – 2012-08-07 10:29:33
與優化發佈版本中的代碼有關的事情可以優化計算結果,但通過無法做到這一點的調試步驟,也許呢? – podiluska 2012-08-07 10:31:15