parseFloat(x).toFixe(2)返回一个字符串

时间:2018-02-06 11:27:03

标签: node.js

有人可以解释一下幕后发生的事情,我怎样才能得到预期的结果?我试图转换一些字符串并添加它们,例如。 ' 1.7888884448',' 2.359848484'和' 3.78333833'到1.8,2.4和3.8 然后做1.8 + 2.4 + 3.8 = 8。我怎样才能实现目标:

let x = parseFloat('95.568').toFixed(2) + 2 // it's concatenating
console.log (x)
// output 95.572
console.log(typeof x)
// out put 'string'

let y =  parseFloat('95.568') + 2 
console.log (y)
// output 97.568
console.log(typeof y)
// out put 'number'

3 个答案:

答案 0 :(得分:1)

  

您可以先添加它们,然后将精度提高到2个小数点。结果会更准确。

function addDecimalStrings(decimalStringArr) {
    let sum = 0;
    for(let i=0; i<decimalStringArr.length; i++){
        // Parse and add
        sum = sum + parseFloat(decimalStringArr[i]);
    }

    // Convert to two decimal points
    return sum.toFixed(2);
}

答案 1 :(得分:0)

可以通过

获得所需的解决方案
(Math.round( '1.7888884448' * 10 ) + Math.round( '2.359848484' * 10 ) + Math.round( '3.78333833' * 10 ))/10

现在关于代码:

parseFloat('95.568').toFixed(2)返回一个字符串,javascript中的string + integer将整数转换为字符串并追加它。

let x = Number(parseFloat('95.568').toFixed(2)) + 2将给出一个整数

答案 2 :(得分:0)

只需将另一个parseFloat放在一边,它将保留十进制数:

parseFloat(parseFloat("9.55656").toFixed(2))

9.56