使用不同浏览器解析 JavaScript 中的浮点数

Posted

技术标签:

【中文标题】使用不同浏览器解析 JavaScript 中的浮点数【英文标题】:Parsing a float number in JavaScript using different browsers 【发布时间】:2016-08-15 15:11:01 【问题描述】:

我有一个带有一些输入控件的网页,p.e.减法。

    <table>
        <tr>
            <td><b>Value 1</b></td>
            <td />
            <td><b>Value 2</b></td>
            <td><b>Result</b></td>
        </tr>
        <tr>
            <td>
                <%--  step="0.01" because of Firefox-browser --%>
                <input type="number" id="value11" oninput="SubtractionWithParameters(document.getElementById('value11').value, document.getElementById('value21').value, 'result', 2)" step="0.01" />
            </td>
            <td> - </td>
            <td>
                <input type="number" id="value21" oninput="SubtractionWithParameters(document.getElementById('value11').value, document.getElementById('value21').value, 'result', 2)" step="0.01" />
            </td>
            <td>
                <input type="number" id="result" step="0.01" />
            </td>
        </tr>
    </table>

对于减法,我定义了 javascript 函数 SubtractionWithParameters,它调用函数 Subtraction。 在输入控件“value11”和“value21”中输入数字、点和/或逗号时,会调用 SubtractionWithParameters 函数并立即计算结果。

        //Subtracts the given parameters and displays the result in the input-Control with the given controlname.
        function SubtractionWithParameters(value1, value2, resultControlName, decimalNumber) 
            decimalNumber = typeof decimalNumber == 'undefined' ? 0 : decimalNumber;
            document.getElementById(resultControlName).value = Subtraction(value1, value2).toFixed(decimalNumber);
        

        //Subtracts the given parameters and returns the result.
        function Subtraction(value1, value2) 
            if (isNaN(value1) || value1 == "")  value1 = 0; 
            if (isNaN(value2) || value2 == "")  value2 = 0; 
            var result = parseFloat(value1) - parseFloat(value2);
            return result;
        

现在的问题是 IE 和 Firefox 期望浮点数的不同输入。 IE:0.36(带点) Firefox:0,36(带逗号)

当我使用 Firefox 并在我的一个输入控件中输入一个包含点的浮点数时,没有任何反应。 如何在我的减法函数中处理这个问题?

提前致谢!

【问题讨论】:

如果 IE 和 FF 期望不同的格式,它们可能设置为不同的语言环境。 根据this question 和this one 的答案,parseFloat() 需要专门的点,并且不使用逗号,无论语言环境如何。但是数字后面的逗号不会导致错误:parseFloat("12,34") 应该返回 12 非常感谢!在为函数提供值时添加“.replace(',','.')”会有所帮助。 【参考方案1】:

非常感谢!在为函数提供值时添加“.replace(',','.')”会有所帮助。

【讨论】:

以上是关于使用不同浏览器解析 JavaScript 中的浮点数的主要内容,如果未能解决你的问题,请参考以下文章

Javascript浮点+浮点=字符串?

JavaScript 中的所有数据都是以 64 位浮点型数据(float) 来存储。浮点型数据使用注意事项

javaScripct入门教程

node.js与它的文件系统模块

JavaScript中的简单浮点数学

nodejs基础认识nodejs详解fs文件系统模块与path路径模块01