预期数字,但返回字符串

时间:2019-05-10 05:29:38

标签: javascript string function numbers javascript-objects

我正在编写一个基本功能来完成运动。io的太空时代(轻松)活动。我编写的函数返回正确的数字,但是作为字符串,有人可以告诉我为什么吗?

我知道这可能是一个简单的答案,但是即使通过调试器工具运行并搜索堆栈溢出问题,我也迷失了。

请不要为练习提供解决方案,因为我想自己解决这个问题。

我已经阅读了有关堆栈溢出的类似标题的问题,例如: Number function returning string

var age = (planet, seconds) => {

    var orbitalPeriod;

    const solarsystem = {
        earth : 1,
        mercury : 0.2408467,
        venus : 0.61519726,
        mars : 1.8808158, 
        jupiter : 11.862615, 
        saturn : 29.447498, 
        uranus : 84.016846,
        neptune : 164.79132
    }
    orbitalPeriod = solarsystem[planet];

    return (seconds / 31557600 / orbitalPeriod).toFixed(2);
}

age('mercury',2134835688); 

// returns "280.88"

我还尝试在orbitalPeriod变量上使用Number和parseFloat并返回如下值:

    orbitalPeriod = Number.parseFloat(solarsystem[planet]);

    return Number.parseFloat(seconds / 31557600 / orbitalPeriod).toFixed(2);

2 个答案:

答案 0 :(得分:0)

content之后使用parseFloat

注意:无需将toFixedNumber放在parseInt对象上的parseFloat上。

window

或使用Unary Plus return Number.parseFloat((seconds / 31557600 / orbitalPeriod).toFixed(2));

+

答案 1 :(得分:-1)

整个输出必须使用parseFloat。如您所使用的问题 .toFixed(2)将返回字符串。您需要为整个结果添加parseFloat

var age = (planet, seconds) => {

    var orbitalPeriod;

    const solarsystem = {
        earth : 1,
        mercury : 0.2408467,
        venus : 0.61519726,
        mars : 1.8808158, 
        jupiter : 11.862615, 
        saturn : 29.447498, 
        uranus : 84.016846,
        neptune : 164.79132
    }
    orbitalPeriod = solarsystem[planet];

    return parseFloat((seconds / 31557600 / orbitalPeriod).toFixed(2));
}

var ageVal = age('mercury',2134835688);
console.log(ageVal, typeof(ageVal));