首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >parseFloat NaN问题

parseFloat NaN问题
EN

Stack Overflow用户
提问于 2014-02-17 10:13:36
回答 3查看 312关注 0票数 0

我在JavaScript中有一个变量,它持有一英镑货币,如下所示

代码语言:javascript
复制
var a = £250

GB250的值是这样的,它不是直接赋值给a的。它类似于变量a= $("#spanid").text();

现在我使用string.split方法拆分这个变量,如下所示

代码语言:javascript
复制
var b = a.split('£');

当我用alert(b[1])检查时,我得到的值是250,这是正确的。

但是现在当我这样做的时候

代码语言:javascript
复制
var c = parseFloat(b[1]). 

我正在获取C的值作为NaN。我尝试了这么多东西,但我一直以NaN的身份获得值,有人能帮上忙吗?

谢谢

EN

回答 3

Stack Overflow用户

发布于 2014-02-17 10:18:17

使用正则表达式和带有类型转换的三元语句从字符串a中获取数字井号值。此解决方案将用于获取字符串中提到的第一个货币值,即使之前或之后存在其他字符也是如此。结果也保证是一个数字,所以在算术计算中立即使用它是安全的。

代码语言:javascript
复制
/* the first line is assumed */
var a = "£250";

var pounds = a.match(/[-.\d]+/g);
/* match possible parts of a pound */

pounds = pounds ? pounds[0] - 0 || 0 : 0;
/* convert match to an actual number type or else 0 if
 * no match is obtained or the match is not valid */

在某些情况下,重要的是知道一个有效的数字不存在,而不是假设它是零。如果您希望接收null匹配或格式不正确的数字(如减号、小数点和数字的随机组合)可能产生的NaN结果,则可以将最后一条语句替换为:

代码语言:javascript
复制
pounds = pounds ? pounds[0] - 0 : pounds;

注意:上面的正则表达式不应该用于从字符串中提取一般数字,也不应该验证字符串中的任意数字。它只用于非常简单的货币数字。

顺便说一下,几个月前,我提供了一个优秀的正则表达式,用于从字符串中提取一般数字。我本打算在这里链接以供参考,但显然我在其中回答的问题已经被删除(可能是重复的问题,所以在我回答它之后,该问题被删除了,这是经常发生的事情)。对于已删除的问题,我该如何找到答案?

票数 1
EN

Stack Overflow用户

发布于 2014-02-17 10:19:02

您的变量不是string,而是a

代码语言:javascript
复制
var a = '£250';
var b = a.split('£');
var c = parseFloat(b[1]);
alert(c);

更新: OP已被编辑...字符串两边仍然没有引号...

票数 0
EN

Stack Overflow用户

发布于 2014-02-17 10:20:34

您需要:

代码语言:javascript
复制
var a = '£250',
    b = a.split('£'),
    c = parseFloat(b[1]);
alert(c);

a是一个字符串,所以您需要将它的值包装在' '中,并使用a.split而不是string.split,因为您已经将变量名定义为a

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21819611

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档