Javascript parseFloat具有不同的ExponentIndicator



我想使用javascript解析以下字符串:-3.755512109246D2。请注意,此格式使用D作为指数指示符,而不是通常的eE

parseFloat("-3.755512109246D2")

将忽略最后一部分(D2(并返回-3.755512109246

阅读规范,我发现只有eE被用作ExponentIndicator,从快速搜索中可以看出,这些核心函数实际上是用C++编写的。

我有什么选择?考虑到我正在解析包含不同格式数字的大文件,有时它们会有一个指数,该指数可能是eEdD

如果我唯一的方法是重写parseFloat,那么现在它以与E相同的方式处理Dd,那么什么是有效的实现?

我的第一个赌注是:

var str ="-3.755512109246D2";
for(var i = 0; i < str.length; i++)
{
if(str[i] == 'd' || str[i] == 'D')
{
str[i] = 'E';
break;
}
}
var result = parseFloat(str);

有更好的方法吗?

您可以将replace与正则表达式一起使用,将dD替换为e,然后将Number而不是parseFloat,以确保整个字符串被解释为数字,而不仅仅是在第一个无效部分被截断:

var result = Number(str.replace(/d/i, "e"));

/d/i不区分大小写地匹配第一个"d"ASCII。

相关内容

  • 没有找到相关文章

最新更新