作者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