使用不同浏览器解析 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 中的浮点数的主要内容,如果未能解决你的问题,请参考以下文章