作者Angelliya (澪澪...谁还有心?)
看板Flash
标题Re: [问题] 计算游戏分数
时间Tue Jan 19 16:03:47 2010
※ 引述《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)