※ 引述《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)