看板 Flash 關於我們 聯絡資訊
※ 引述《aquarianboy (我是沒牌的營養師!)》之銘言: : var score:String = new String("00000000" +800); : trace(score.substr(-8, 8)); : 原理就是反正不管怎麼樣,就在分數旁邊先補8個零(分數如果是負的不適用) : 再從右邊取8個位數就行了 :) 好一陣子之前的討論了 剛好想到回來分享一下心得 目的:把一個數字補滿0 ex:800分,用0補齊8位,變成00000800 我想的方法是 function scoreString(targetNum:uint, lengthNum:uint):String { return String(targetNum*Math.pow(0.1, lengthNum)).substr(2,lengthNum); } 想法: 因為輸入的資料型態是數字,而補0是字串的處理 (好像只有for迴圈的方法...) 所以乾脆變成小數點, 把原本的數字變成0.數字,然後再取"."之後的數字 所以假設是123,補滿5位 就把原本的123乘上0.00001 (0.1的5次方) 0.00123 取"."之後5位 就會是00123了 如果個位數是0的情況 例如10取3位,理論上是 0.010 扣掉最後的0會變成 0.01 取3位會有問題 不過...巧妙的是 Math.pow(0.1, lengthNum) 取出來的數值可能會是0.0010000000000000002 反而不會有輸入數字個位數是0的BUG 限制: 0與負數不適用 參考看看:) -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 61.220.144.46 ※ 編輯: Angelliya 來自: 61.220.144.46 (01/19 16:05) ※ 編輯: Angelliya 來自: 61.220.144.46 (01/19 16:30)