【问题标题】:Why parseFloat in javascript returns string type for me?为什么javascript中的parseFloat会为我返回字符串类型?
【发布时间】:2018-03-27 04:57:43
【问题描述】:

我搜索并仅找到与我的问题相关的这个问题,但并不完全相同,因为我使用的是 toFixed 而不是 toPrecision。 Why does toPrecision return a String?

这是我的代码

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

【问题讨论】:

  • toFixedtoPrecision 都返回字符串。请阅读文档。 “如何解决?” — 取决于你的目标是什么。

标签: javascript string types numbers parsefloat


【解决方案1】:

如文档中所述,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

【讨论】:

  • 这让我很困惑,toFixed 应该返回一个Number
  • 是的,你会认为它会返回一个数字,但不是,你必须使用数字或像'parseFloat(parseFloat(“1738382.274838”).toFixed(2))'那样执行两次parseFloat。花了我一整天的时间来解决这个问题
【解决方案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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-03-28
    • 1970-01-01
    • 1970-01-01
    • 2015-09-04
    • 2012-03-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多