我正在开发一个 JavaScript 函数,它采用两个值:十进制值的精度和十进制值的小数位数。

此函数应计算可以存储在该大小的小数中的最大值。

例如:精度为 5、小数位数为 3 的小数的最大值为 99.999。

我所拥有的可以完成这项工作,但它并不优雅。谁能想到更聪明的方法?

另外,请原谅使用这种奇怪版本的匈牙利符号。

function maxDecimalValue(pintPrecision, pintScale) { 
    /* the maximum integers for a decimal is equal to the precision - the scale. 
        The maximum number of decimal places is equal to the scale. 
        For example, a decimal(5,3) would have a max value of 99.999 
    */ 
    // There's got to be a more elegant way to do this... 
    var intMaxInts = (pintPrecision- pintScale); 
    var intMaxDecs = pintScale; 
 
    var intCount; 
    var strMaxValue = ""; 
 
    // build the max number.  Start with the integers. 
    if (intMaxInts == 0) strMaxValue = "0";     
    for (intCount = 1; intCount <= intMaxInts; intCount++) { 
        strMaxValue += "9"; 
    } 
 
    // add the values in the decimal place 
    if (intMaxDecs > 0) { 
        strMaxValue += "."; 
        for (intCount = 1; intCount <= intMaxDecs; intCount++) { 
            strMaxValue += "9"; 
        } 
    } 
    return parseFloat(strMaxValue); 
} 

请您参考如下方法:

没有测试过:

function maxDecimalValue(precision, scale) { 
    return Math.pow(10,precision-scale) - Math.pow(10,-scale); 
} 

精度必须为正

maxDecimalValue(5,3) = 10^(5-3) - 10^-3 = 100 - 1/1000 = 99.999 
maxDecimalValue(1,0) = 10^1 - 10^0 = 10 - 1 = 9 
maxDecimalValue(1,-1) = 10^(1+1) - 10^1 = 100 - 10 = 90 
maxDecimalValue(2,-3) = 10^(2+3) - 10^3 = 100000 - 1000 = 99000 


评论关闭
IT序号网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!