package util
{
public class NumberUtil
{
/**
*四舍五入
* @param nNumber 要四舍五入的数字
* @param nRoundToInterval 四舍五入的精度 比如0.1
* @return
*
*/
public static function round(nNumber:Number, nRoundToInterval:Number = 1):Number {
return Math.round(nNumber / nRoundToInterval) * nRoundToInterval;
}
/**
*向下取整到精度
* @param nNumber
* @param nRoundToInterval 精度 比如0.1
* @return
*
*/
public static function floor(nNumber:Number, nRoundToInterval:Number = 1):Number {
return Math.floor(nNumber / nRoundToInterval) * nRoundToInterval;
}
/**
*向上取整到精度
* @param nNumber
* @param nRoundToInterval 精度 比如0.1
* @return
*
*/
public static function ceil(nNumber:Number, nRoundToInterval:Number = 1):Number {
return Math.ceil(nNumber / nRoundToInterval) * nRoundToInterval;
}
/**
*取范围内的随机数
* @param nMinimum 随机最小值
* @param nMaximum 随机最大值
* @param nRoundToInterval 随机的精度
* @return
*
*/
public static function random(nMinimum:Number, nMaximum:Number = 0, nRoundToInterval:Number = 1):Number {
// If the minimum is greater than the maximum, switch the two.
if(nMinimum > nMaximum) {
var nTemp:Number = nMinimum;
nMinimum = nMaximum;
nMaximum = nTemp;
}
var nDeltaRange:Number = (nMaximum - nMinimum) + (1 * nRoundToInterval);
var nRandomNumber:Number = Math.random() * nDeltaRange;
nRandomNumber += nMinimum;
return floor(nRandomNumber, nRoundToInterval);
}
private static var _aUniqueIDs:Array;
/**
*创建一个唯一id
* @return
*
*/
public static function getUnique():Number {
if(_aUniqueIDs == null) {
_aUniqueIDs = new Array();
}
var dCurrent:Date = new Date();
var nID:Number = dCurrent.getTime();
//检查是否存在,防止同一秒创建
while(!isUnique(nID)) {
nID += random(dCurrent.getTime(), 2 * dCurrent.getTime());
}
_aUniqueIDs.push(nID);
// Return the number.
return nID;
}
/**
* 检查一个数组里是否存在一个数.
* @param number The number to compare.
* @return True or false
*/
private static function isUnique(nNumber:Number):Boolean {
for(var i:Number = 0; i < _aUniqueIDs.length; i++) {
if(_aUniqueIDs[i] == nNumber) {
return false;
}
}
return true;
}
}
}
{
public class NumberUtil
{
/**
*四舍五入
* @param nNumber 要四舍五入的数字
* @param nRoundToInterval 四舍五入的精度 比如0.1
* @return
*
*/
public static function round(nNumber:Number, nRoundToInterval:Number = 1):Number {
return Math.round(nNumber / nRoundToInterval) * nRoundToInterval;
}
/**
*向下取整到精度
* @param nNumber
* @param nRoundToInterval 精度 比如0.1
* @return
*
*/
public static function floor(nNumber:Number, nRoundToInterval:Number = 1):Number {
return Math.floor(nNumber / nRoundToInterval) * nRoundToInterval;
}
/**
*向上取整到精度
* @param nNumber
* @param nRoundToInterval 精度 比如0.1
* @return
*
*/
public static function ceil(nNumber:Number, nRoundToInterval:Number = 1):Number {
return Math.ceil(nNumber / nRoundToInterval) * nRoundToInterval;
}
/**
*取范围内的随机数
* @param nMinimum 随机最小值
* @param nMaximum 随机最大值
* @param nRoundToInterval 随机的精度
* @return
*
*/
public static function random(nMinimum:Number, nMaximum:Number = 0, nRoundToInterval:Number = 1):Number {
// If the minimum is greater than the maximum, switch the two.
if(nMinimum > nMaximum) {
var nTemp:Number = nMinimum;
nMinimum = nMaximum;
nMaximum = nTemp;
}
var nDeltaRange:Number = (nMaximum - nMinimum) + (1 * nRoundToInterval);
var nRandomNumber:Number = Math.random() * nDeltaRange;
nRandomNumber += nMinimum;
return floor(nRandomNumber, nRoundToInterval);
}
private static var _aUniqueIDs:Array;
/**
*创建一个唯一id
* @return
*
*/
public static function getUnique():Number {
if(_aUniqueIDs == null) {
_aUniqueIDs = new Array();
}
var dCurrent:Date = new Date();
var nID:Number = dCurrent.getTime();
//检查是否存在,防止同一秒创建
while(!isUnique(nID)) {
nID += random(dCurrent.getTime(), 2 * dCurrent.getTime());
}
_aUniqueIDs.push(nID);
// Return the number.
return nID;
}
/**
* 检查一个数组里是否存在一个数.
* @param number The number to compare.
* @return True or false
*/
private static function isUnique(nNumber:Number):Boolean {
for(var i:Number = 0; i < _aUniqueIDs.length; i++) {
if(_aUniqueIDs[i] == nNumber) {
return false;
}
}
return true;
}
}
}