14.52-14.49 = 0.0299999?? - Android

Table of Contents

※ 引述《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

--

All Comments

Susan avatarSusan2011-03-19
糟了 我code都用double XD
Candice avatarCandice2011-03-23
水喔...
Rosalind avatarRosalind2011-03-25
或許是對資料型態有更大的限制?
Sierra Rose avatarSierra Rose2011-03-29
浮點數會有問題的話可以找的到無限組有問題..
Yedda avatarYedda2011-04-02
所以設修件式頂多過濾掉一些而已..
Andrew avatarAndrew2011-04-06
Hazel avatarHazel2011-04-07
貼一個 C_and_CPP 的萬年置底連結
http://blog.dcview.com/article.php?a=VmgBZFE5AzI%3D
Hedy avatarHedy2011-04-09
推樓上那篇
Susan avatarSusan2011-04-10
要避開這個要用十進位浮點數吧,是說根本沒必要就是了w
William avatarWilliam2011-04-13
這種東西就某種方面來說是BUG 但就另一方面來說他是正常的
根本沒什麼好爭的 因為沒有誰對誰錯