作者jonathanmeow (喵)
看板Flash
標題Re: [問題] 想請問flash高手...這程式哪裡出問題?
時間Mon Nov 20 12:20:11 2006
※ 引述《etrexetrex (ETREX)》之銘言:
: 這是浮點數儲存時會造成的問題
: 因為浮點數用二進位表示法去逼近十進位的值
: 例如0.5 = 1/2 可以用2進位完全的表示
: 但 0.4 = 0.25 + 0.125 + 0.015625 + .....
: 二進位是無法表示0.4的
: 但是可以逼近到 0.3999999
: 因此若將實驗改為
: 隨機取出兩個數字後
: 將其中一個除以16另外一個除以128
: 然後再將兩個都乘以128
: 接著判斷這兩個數字和她們四捨五入到整數位的數字是否相等
: 應該就不會出現數字失真的問題
喔 我的天啊
原來如此?!
我昨天也想到 可能是顯示出來是112
可是實際上是111.999999999999999999999999999999....
所以四捨五入後變成112(flash在trace的時候好像會到某個位數就四捨五入)
但是實際上他還是差了112一點點
可是我卻沒辦法證實我的想法 也不知道為什麼會出現這樣的問題
經過您這麼一解釋
我就比較清楚為什麼會有問題了
上網查了一下
好像連c語言都是用類似的方式去紀錄
那是不是都會有失真的問題呢??
又
可以怎麼去克服呢?
(ps 我的程式已經用別種方式克服 可是我覺得還是有一點遺憾 可參考如下
http://pub.mlc.edu.tw/files/002679/learn/simple.swf
很簡陋 但是有達到一些我的目的了)
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 163.19.207.209
1F:推 etrexetrex:另外寫函數作分數運算?分母分子分開存 顯示時才用浮點 11/20 19:22
2F:推 jonathanmeow:是的 您真內行 我把所有的類型都變成分數 11/20 19:43
3F:→ jonathanmeow:每個題目都有分子、分母和整數部份(帶分數) 11/20 19:43
4F:→ jonathanmeow:但當題目類型是整數時 就只顯示分子(此時分母等於1) 11/20 19:44
5F:→ jonathanmeow:小數時就隨機產生分母是10或100 分子就是一個整數 11/20 19:44
6F:→ jonathanmeow:列出在螢幕上的時候才顯示出分子除以10或100的狀況 11/20 19:45
7F:→ jonathanmeow:至於真分數假分數就是隨機跑分子、分母 做些小判斷 11/20 19:45
8F:→ jonathanmeow:帶分數就是先產生一個假分數 然後計算使之變成帶分數 11/20 19:45
9F:→ jonathanmeow:雖然不曉得學生在進行練習的時候有沒幫助 11/20 19:47
10F:→ jonathanmeow:但應該會為老師節省很多工作(至少可以拿來出題) 11/20 19:47
11F:→ jonathanmeow:但該題會判斷為錯答 用以解決學生真的解不出來正解時 11/20 19:48
12F:→ jonathanmeow:可以讓他知道答案 但又不會造成答對率的誤判 11/20 19:48
13F:→ jonathanmeow:怎麼會少了一行 (拿來出題)之後有下列這句 11/20 19:49
14F:→ jonathanmeow:螢幕上按"上上下下左左右又"可以直接出現答案 11/20 19:50
15F:推 etrexetrex:超有趣的密技 XD C#裡有變數型態:十進位數 好像不失真 11/20 20:32
16F:推 aquarianboy:AS3.0好像也有int可以用 11/20 21:36
17F:→ aquarianboy:不過不確定是不是能不失真 :) 11/20 21:36