作者rocky1218 (Free&Easy...N N )
看板Android
標題Re: [討論] 14.52-14.49 = 0.0299999??
時間Sat Mar 19 03:43:07 2011
※ 引述《newline (漫長的等待與相遇)》之銘言:
: 聽說有的手機算出來是0.29999
: 測試一下你的手機吧
: 聽說MOTO HTC 部份手機會這樣
睡不著寫個Android程式驗證是否是變數資料型態的問題
以14.52 - 14.49當作例子
1. 變數宣告為浮點數 (float)
14.52 - 14.49 = 0.030000687
http://img339.imageshack.us/i/floatv.png/
2. 變數宣告為倍精度浮點數 (double)
14.52 - 14.49 = 0.02999999999999936
http://img15.imageshack.us/i/doublev.png/
3. 變數宣告為整數 (int)
14.52 - 14.49 = 0
http://img843.imageshack.us/i/intd.png/
所以...Google做的計算機,資料型態應該是宣告成double才會造成這個問題XD
無聊的可以下載這個apk去玩玩看...(按menu有設定可以選擇float、double及int)
http://www.multiupload.com/B9YZOL2FR7
我覺得Google根本是懶得理這個問題,多設幾個條件式就可以避免這問題了吧QQ
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 122.121.8.93
1F:推 wayne0411:糟了 我code都用double XD 03/19 04:09
2F:推 awesomemaxe:水喔... 03/19 04:38
3F:→ Illus:或許是對資料型態有更大的限制? 03/19 04:57
4F:推 vincentin:浮點數會有問題的話可以找的到無限組有問題.. 03/19 08:10
5F:→ vincentin:所以設修件式頂多過濾掉一些而已.. 03/19 08:11
6F:→ vincentin: 條 03/19 08:14
7F:推 LPH66:貼一個 C_and_CPP 的萬年置底連結 03/19 09:19
9F:→ ming1053:推樓上那篇 03/19 17:38
10F:推 albb0920:要避開這個要用十進位浮點數吧,是說根本沒必要就是了w 03/20 03:28
11F:推 CloudJB:這種東西就某種方面來說是BUG 但就另一方面來說他是正常的 03/21 01:26
12F:→ CloudJB:根本沒什麼好爭的 因為沒有誰對誰錯 03/21 01:26