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