2014-09-13 63 views
-4

我發現很多questions.But沒有幫助我比較浮點值雙導致不同的行爲

 float x = 0.1; 
     x == 0.1 

上面的代碼返回false。因爲我嘗試比較雙精度值與單精度x。

 float x = 0.5 
     x == 0.5 

這一個返回true。我不能找到它爲什麼會返回true?有什麼建議麼 ??

編輯:那麼如何確定哪個值在兩個精度中具有相同的表示?

+0

'X == 0.1f'更可能以比較真實的(但仍不能保證) – 2014-09-13 09:50:09

+0

http://www.exploringbinary.com/why-0-point-1-does-不存在於浮點/ – Maroun 2014-09-13 09:50:17

+0

另一個重複http://stackoverflow.com/questions/20855633/a-float-set-to-0-1-compares-false-against-0-1?rq=1 – 2014-09-13 09:58:26

回答

5
x == 0.1 

0.1不是float類型但double類型。 floatdouble不具有相同的精度。 0.1ffloat類型。

爲什麼它的工作原理與0.5是因爲0.5在兩個floatdouble一個精確的表示(二進制IEEE-754)類型。

+0

+1請參閱我的編輯。並讓我知道爲什麼它downvoted ?? – 2014-09-13 09:52:01

+2

,因爲這裏有太多重複 – 2014-09-13 09:57:51