Javascript 具有不同 ExponentIndicator 的 parseFloat

Javascript parseFloat with different ExponentIndicator

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

parseFloat("-3.755512109246D2")

将忽略最后一部分 (D2) 和 return -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);

有没有更好的方法?

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

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

/d/i 匹配第一个“d” ASCII-case-insensitively.