为什么javascript中的parseFloat会为我返回字符串类型?

为什么javascript中的parseFloat会为我返回字符串类型?,javascript,string,types,numbers,parsefloat,Javascript,String,Types,Numbers,Parsefloat,我搜索了一下,只找到了与我的问题相关的,但不完全相同,因为我使用的是toFixed而不是toPrecision。 这是我的密码 var oldv = parseFloat(document.getElementById('total').textContent).toFixed(2); alert(typeof oldv); // returns string var testv = parseInt(document.getElementById('total').textContent);

我搜索了一下,只找到了与我的问题相关的,但不完全相同,因为我使用的是toFixed而不是toPrecision。

这是我的密码

var oldv = parseFloat(document.getElementById('total').textContent).toFixed(2);
alert(typeof oldv); // returns string
var testv = parseInt(document.getElementById('total').textContent);
alert(typeof testv); // returns number  
我需要进一步的数学步骤,所以字符串类型搞砸了。。。 为什么?如何解决?TIA

如文件中所述,返回

用定点表示法表示给定数字的字符串

如果需要将返回的结果用作数字,可以使用内置对象:

var oldv=parseFloat(Math.PI).toFixed(2);
控制台日志(oldv);
console.log(oldv的类型);//返回字符串
var num=数量(oldv);
console.log(num);

console.log(typeof num);//返回number
根据文档,number.prototype.toFixed()函数应该返回字符串类型

如果需要对数字执行进一步的算术运算,可以在变量名(+)之前使用一元加号运算符将其强制还原为数字形式,如下所述:


并且都返回字符串。请阅读文档。“如何解决?” — 取决于你的目标是什么。对我来说,这是一个令人困惑的行为,
toFixed
应该返回一个
Number
。是的,你会认为它会返回一个数字,但不是,你必须使用Number或者做两次parseFloat,比如'parseFloat(parseFloat(“1738382.274838”)。toFixed(2))`。我花了一整天才弄明白
var oldv = parseFloat(document.getElementById('total').textContent).toFixed(2);

alert(typeof oldv); // Returns string

alert(typeof +oldv); // Returns number