flash中並沒有內建的儲存小數位的方法,但是當你想把如3.14159265354.這樣的資料只
保留兩位元時怎麼辦, 下面的函數就可以解決這個問題.
/**
* 資料計算方法保留小數位
* @author litianhua
* @num 源數值
* @n 保留的小數位
* @return 保留小數位後的資料
*/
public static function decimal2(num:Number,n:Number):Number{
var ts:String="1";
var tn:Number=1;
//計算要乘的位元
for(var i=0;i<n;i++){
ts+="0"
}
tn=Number(ts);
return Math.round(num*tn)/tn
}
這種方法是利用Math.round來進行截位的,把round換成floor或ceil還可以得到小數的上限值或下限值.另外還有一種我很早以前,還沒有想到這種方法時用到的函數.
/**
* 字串切割方法保留小數位
* @author litianhua
* @num 源數值
* @n 保留的小數位
* @return 保留小數位後的資料
*/
public static function decimal(num:Number,n:Number):Number{
//參數預設值
if(n==undefined){
n=1;
}
var numStr:String=String(num)
var numStrArr:Array=numStr.split(".");
//實數與小數
var a:String=numStrArr[0];
var b:String=numStrArr[1];
//資料檢查
if(b==undefined){
//沒有小數位
return Number(a);
}
b=b.substr(0,n);
return Number(a+"."+b)
}
這方法如果要對小數位進行四捨五入的話,還要多寫幾行,實在麻煩的很,因此被我無情的打入冷宮了^_^