我正在编写一个基本功能来完成运动。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);
答案 0 :(得分:0)
在content
之后使用parseFloat
。
注意:无需将toFixed
或Number
放在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));