//#region 函数区域
Namespace.register("U.UF.Math");

/**
* 获取一个随机数
*
* @param  {number} 随机数的长度
* @return  {number} 随机数
*/
U.UF.Math.getRandom = function (n) {
    return Math.floor(Math.random() * n + 1);
}

/**
* 获取两个数字间的随机数
*
* @param  {number} 位置的开始
* @param  {number} 位置的结束
* @return  {number} 随机数
*/
U.UF.Math.randomRange = function (m, n) {
    return Math.floor(Math.random() * Math.abs(n - m)) + (m > n ? n : m);
}

/**
* 冒泡排序法的封装
*
* @param  {array} 排序数组
* @param  {string} 排序类型 
* @param  {function} 判断执行函数
* @param  {number} 是否是升序降序
----------[-1] 升序
----------[1] 降序
*/
U.UF.Math.sequence = function (arr, str, fun, num) {
    if (arr) {//是否存在数组
        var _num;
        arr = arr.sort(function (obj1, obj2) {//arr.sort()根据条件,对json数组进行排序
            if (fun(obj1[str], obj2[str])) {//是否是升序降序
                _num = (-1) * (num || 1); //num=-1升序
            } else {
                _num = 1 * (num || 1); //num=1 降序
            }
            return _num;
        });
        return arr;
    };
}

/**
*浮点数运算函数
JavaScript浮点运算的一个bug。 比如:7*0.8 JavaScript算出来就是:5.6000000000000005
* 数字计算 解决浮点的bug
*
* @param  {number} 数字1
* @param  {number} 数字2
* @param  {string} 连系符号 + - * /
*/
U.UF.Math.floatOperate = function (number1, number2, operator) {
    var i, //循环初始化
        _pow, ////用于存放数据的变量
        _strarr = [String(number1), String(number2)]; //用于存放数据的数组
    //获取变成整数差几位
    for (i = 0; i < 2; i++) {
        _strarr[i + 2] = _strarr[i].length - _strarr[i].indexOf(".") - 1;
    }
    //变成整数的幂
    _pow = Math.pow(10, Math.max(_strarr[2], _strarr[3]));
    //运算得出结果
    return (eval("0," + _strarr[0] * _pow + operator + _strarr[1] * _pow)) / _pow;
}