我發現很多questions.But沒有幫助我比較浮點值雙導致不同的行爲
float x = 0.1;
x == 0.1
上面的代碼返回false。因爲我嘗試比較雙精度值與單精度x。
float x = 0.5
x == 0.5
這一個返回true。我不能找到它爲什麼會返回true?有什麼建議麼 ??
編輯:那麼如何確定哪個值在兩個精度中具有相同的表示?
我發現很多questions.But沒有幫助我比較浮點值雙導致不同的行爲
float x = 0.1;
x == 0.1
上面的代碼返回false。因爲我嘗試比較雙精度值與單精度x。
float x = 0.5
x == 0.5
這一個返回true。我不能找到它爲什麼會返回true?有什麼建議麼 ??
編輯:那麼如何確定哪個值在兩個精度中具有相同的表示?
x == 0.1
0.1
不是float
類型但double
類型。 float
和double
不具有相同的精度。 0.1f
是float
類型。
爲什麼它的工作原理與0.5
是因爲0.5
在兩個float
和double
一個精確的表示(二進制IEEE-754)類型。
+1請參閱我的編輯。並讓我知道爲什麼它downvoted ?? – 2014-09-13 09:52:01
,因爲這裏有太多重複 – 2014-09-13 09:57:51
'X == 0.1f'更可能以比較真實的(但仍不能保證) – 2014-09-13 09:50:09
http://www.exploringbinary.com/why-0-point-1-does-不存在於浮點/ – Maroun 2014-09-13 09:50:17
另一個重複http://stackoverflow.com/questions/20855633/a-float-set-to-0-1-compares-false-against-0-1?rq=1 – 2014-09-13 09:58:26