4 回答

TA貢獻(xiàn)3593條經(jīng)驗(yàn) 獲得超1個贊

TA貢獻(xiàn)883條經(jīng)驗(yàn) 獲得超454個贊
正因?yàn)楦↑c(diǎn)數(shù)表示得不精確,多次運(yùn)算后可能會發(fā)生數(shù)據(jù)“漂移”的現(xiàn)象。
實(shí)踐中判斷兩個浮點(diǎn)數(shù)是否相等通用這樣的辦法:用兩個浮點(diǎn)數(shù)差的絕對值和一個很小的數(shù)(如0.000001或選擇適當(dāng)?shù)木龋┫啾容^,如果差異比參考值小就認(rèn)為它們相等。

TA貢獻(xiàn)6條經(jīng)驗(yàn) 獲得超1個贊
我覺得之前那位說得對,
符點(diǎn)數(shù)存儲標(biāo)準(zhǔn)IEEE754,
符點(diǎn)數(shù)是采用二進(jìn)制科學(xué)計數(shù)法來進(jìn)行存儲的,因此,絕大多數(shù)的數(shù)在計算機(jī)中是不能 精確 表示的

TA貢獻(xiàn)13條經(jīng)驗(yàn) 獲得超11個贊
0.5等于2的-1次方,計算機(jī)可以準(zhǔn)確表示;而0.1,不能精確表示,只能盡量精確; 即c-d或b+d不會是個整數(shù)。

TA貢獻(xiàn)11條經(jīng)驗(yàn) 獲得超10個贊
是和這個有關(guān)系嗎?
符點(diǎn)數(shù)存儲標(biāo)準(zhǔn)IEEE754,
符點(diǎn)數(shù)是采用二進(jìn)制科學(xué)計數(shù)法來進(jìn)行存儲的,因此,絕大多數(shù)的數(shù)在計算機(jī)中是不能 精確 表示的.
如果兩個數(shù)a b都是常數(shù)賦值,這樣比較,應(yīng)該不會有問題,如:double a=5.3,b=5.3;
if ( a == b )
{
printf("a=b\n");
}
這時會輸出a=b
如果a或b是經(jīng)過運(yùn)算后得到的值,這時就不一定是一個精確的你想要的值了,如:
double b=2.6+2.7,a=5.3;
if ( a == b )
{
printf("a=b\n");
}
這時就不一定能輸出a=b了!
那為什么以0.5遞增的時候又可以了?
- 4 回答
- 0 關(guān)注
- 4308 瀏覽
添加回答
舉報