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

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

问题描述:

我搜索,只发现这一个与我的问题有关,但不完全一样,因为我用toFixed而不是toPrecision。 Why does toPrecision return a String?为什么javascript中的parseFloat会返回字符串类型?

这里是我的代码

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

+5

['toFixed'] (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/toFixed)和['toPrecision'](https://developer.mozilla.org/en-US/ docs/Web/JavaScript/Reference/Global_Objects/Number/toPrecision)都返回字符串。请阅读文档。 _“如何解决?” - 取决于你的目标是什么。 – Xufox

如文档提到,toFixed返回

使用定点表示

如果你需要使用返回的结果为数字表示给定数量的字符串,就可以使用内置对象Number

var oldv = parseFloat(Math.PI).toFixed(2); 
 

 
console.log(oldv); 
 
console.log(typeof oldv); // returns string 
 

 
var num = Number(oldv); 
 
console.log(num); 
 
console.log(typeof num); // returns number

+1

谢谢。这工作。 –

+0

这是令我困惑的行为,'toFixed'应该返回'Number'。 – Taurus

Number.prototype.toFixed()函数应该按照文档found here返回字符串类型。

如果需要用数字执行进一步的算术可以使用一元加运算符之前的变量名称(+)记载here像这样迫使它放回数字形式:

var oldv = parseFloat(document.getElementById('total').textContent).toFixed(2); 

alert(typeof oldv); // Returns string 

alert(typeof +oldv); // Returns number