慕尼黑5688855
2019-06-10 20:27:39
為什么我看到一個雙變量初始化為一些值,如21.4為21.399999618530273?double r = 11.631;double theta = 21.4;在調(diào)試器中,如下所示11.631000000000000和21.399999618530273.我怎么才能避免這種情況?
3 回答

隔江千里
TA貢獻1906條經(jīng)驗 獲得超10個贊

慕娘9325324
TA貢獻1783條經(jīng)驗 獲得超4個贊
看到結(jié)尾有很多0110 0110 0110嗎?那是因為 0.1有 二進制沒有精確的表示..這是一個重復(fù)的二進制數(shù)。就像1/3沒有小數(shù)表示一樣。1/3是0.33333333,你必須永遠寫3。如果你失去耐心,你會得到一些不準確的東西。
所以你可以想象,在十進制中,如果你試著做3*1/3,而你沒有時間永遠寫3的話,你得到的結(jié)果將是0.99999999,而不是1,人們會因為你錯了而生氣。

躍然一笑
TA貢獻1826條經(jīng)驗 獲得超6個贊
double theta = 21.4;
if (theta == 21.4){}
if (fabs(theta - 21.4) <= 1e-6){}
添加回答
舉報
0/150
提交
取消