2 回答

TA貢獻(xiàn)1794條經(jīng)驗(yàn) 獲得超7個(gè)贊
最近float
的16.67
是16.6700000762939453125
。
最近float
的100.02
是100.01999664306640625
將前者加到自身5次并不完全等于后者,因此它們不會(huì)比較相等。
在這種特殊情況下,與1e-6數(shù)量級(jí)的公差進(jìn)行比較可能是可行的方法。

TA貢獻(xiàn)1884條經(jīng)驗(yàn) 獲得超4個(gè)贊
您確實(shí)有一個(gè)浮點(diǎn)問題。
您可以并且應(yīng)該統(tǒng)一使用Mathf.Approximately,這是他們專門為此目的構(gòu)建的實(shí)用程序功能
嘗試這個(gè)
if (Mathf.Approximately(total, 100.02f))
{
Debug.Log("It's equal");
}
else
{
Debug.Log(" Not equal. Your sum is = " + total);
}
另外,作為一個(gè)附帶說明,如果計(jì)劃進(jìn)行任何具有精確數(shù)字至關(guān)重要的計(jì)算,則應(yīng)使用小數(shù)。它是一個(gè)稍大的數(shù)據(jù)結(jié)構(gòu),因此速度較慢,但設(shè)計(jì)為沒有浮點(diǎn)問題。(或至少精確到10 ^ 28)
對(duì)于99.99%的情況,只要您比較正確,浮點(diǎn)數(shù)和雙精度數(shù)就足夠了。
在這里可以找到更深入的解釋:.net中十進(jìn)制浮點(diǎn)數(shù)和double的區(qū)別
- 2 回答
- 0 關(guān)注
- 1295 瀏覽
添加回答
舉報(bào)