2017-10-15 153 views
-1

我搜索,只發現這一個與我的問題有關,但不完全一樣,因爲我用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

回答

3

如文檔提到,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

2

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 
相關問題