为了将计算值与固定精度数进行比较,是字符串转换更好还是数学计算?

时间:2017-08-04 19:58:27

标签: javascript

我有以下两种情况,我想将某个计算值与浮动值 0.05 进行比较。

在第一种情况下,该值将转换为字符串,以获取小数点后两位的值,然后将其转换回数字进行比较。

var soneFunction = function(value)
{
    var a = ((Math.round(value * 10) / 10) - value).toFixed(2);

    if(Number(a) === 0.05)
        a = -0.05;

    return a;
};

在第二种情况下,我没有进行任何字符串数转换,而是使用数学函数。

var soneFunction = function(value)
{   
    var roundingValue = (Math.round(value * 10) / 10) - value;

    // fix the value till 2 decimal places
    var a = Math.round((roundingValue) * 100) / 100;

    if(a === 0.05)
        a = -0.05;

    return a;
};

我很想知道哪一个更好?

更新 更好的是,我的意思是性能和内存消耗。

1 个答案:

答案 0 :(得分:0)

我认为你可以使用

let parseFloatWithPrecision = function (value, precision){
    var floatValue = parseFloat(value) || 0.0   ;

    floatValue = floatValue.toFixed(precision);
    return parseFloat(floatValue);
}

let compare = function(val){
    if(parseFloatWithPrecision(val, 2) == 0.05)
        return -0.05;
    return val;
}