作者op907 (op)
看板Flash
標題[問題] 用按鈕輸出數字
時間Thu Apr 23 13:45:40 2009
我先在舞臺上設三個按鈕分別是 數字1 數字2 小數點
我想用滑鼠按下數字1按鈕後動態欄位出現 1
再按下2後 則出現 12
再按下2後 則出現 122
再按下小數點再按下1 則出現122.1
再按下2 則出現122.12
這是我的寫法
var a:Number;
var s:Number=0;
var d:Number=0;
var t:Number=0;
var n:Number=1;
function one(e:MouseEvent):void{
d=1;
if(t==0){
s=10*s+d;
out_txt.text=String(s);}
if(t==1){
a=d*Math.pow(0.1,n);
n=n+1;
s=s+a;
out_txt.text=String(s);}
}
function two(e:MouseEvent):void{
d=2;
if(t==0){
s=10*s+d;
out_txt.text=String(s);}
if(t==1){
a=d*Math.pow(0.1,n);
n=n+1;
s=s+a;
out_txt.text=String(s);}
}
function point(e:MouseEvent):void{
t=1;}
one_btn.addEventListener(MouseEvent.CLICK, one);
two_btn.addEventListener(MouseEvent.CLICK, two);
point_btn.addEventListener(MouseEvent.CLICK, point);
這個寫法到小數點第二位就錯了
請問要怎修改
或是有其他寫法
然後 Math.pow(0.1,3) 為什麼出來的值都怪怪的
整數都沒問題 像 Math.pow(10,3)就沒問題
我是用AS3寫的
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 118.170.124.172
推 cjcat2266:Math.pow(0.1, 3)你得到什麼值? 04/23 13:49
→ cjcat2266:小數第二位就錯的意思是? 04/23 13:49
→ op907:Math.pow(0.1,3)=0.0010000000000000002 04/23 13:53
→ op907:會變成122.1199999999大概是這樣 而我小數點第二位是輸入2 04/23 13:56
推 cjcat2266:恩,浮點數運算並不是100%準確的,小誤差是很正常的 04/23 13:58
→ cjcat2266:這種時候可以自己做一些四捨五入到小數第十位之類的處理 04/23 13:58
→ op907:不能按下什麼就是什麼嗎 04/23 14:00
→ op907:我寫的這個程式應該是錯了 很奇怪 04/23 14:03
推 pm2001:如果你是要寫計算機的話,做加減乘除前都當成字串來運算 04/23 14:06
推 Angelliya:推樓上:) 04/23 14:39
推 Allensph:先用字串相加 要運算時再轉數字 04/23 15:10
→ op907:請問字串怎麼相加 04/23 15:47
推 cjcat2266:所謂相加就是 "1" + "2" + "." + "1" == "12.1" 04/23 16:26
→ cjcat2266: *字串的 04/23 16:26