parseFloat 不适用于移动设备
parseFloat does not work on mobile devices
我正在编写一个非常基础的 html 计算器。最终结果和用户输入显示在下面的 "textDisplay_" 区域中:
<div id ="textDisplayRow_">
<div id = "textDisplay_" class = "calcTextDisplay">0.0</div>
</div>
我还有一个 JavaScript 代码,它使用这些函数获取显示值并将其解析为浮点数:
function getCurrentText() {
"use strict";
return document.getElementById("textDisplay_").innerHTML;
}
function getDisplayedNum() {
"use strict";
if (getCurrentText() === emptyMesg) {
return maxSafeInt;
}
var t = 1*getCurrentText();
//var t = parseFloat(getCurrentText(), 10);
if ((isNaN(t)) || (t === undefined)) {
return 0;
} else {
return t;
}
}
此代码在桌面浏览器上运行良好(我已经在 Chrome、FireFox 和 IE 上对其进行了测试)它们看起来都不错,假设我输入:
3.14*2 然后按'=' 他们给我 6.28.
但是在我的 android 4 上,使用最新版本的移动设备 chrome 和 firefox,所有小数都被四舍五入了!所以如果我输入“3.14*2=”,我会得到“6”!
我该如何解决这个问题?我看过其他包含 parseFloat does not work 的帖子,其中 none 与此问题类似。
两者也给出了相似的结果:
1*getCurrentText();
parseFloat(getCurrentText(), 10);
一个选择是编写我自己的 parseFloat(我以前为微控制器做过这个!)但我真的不想那样做。
非常感谢。
你可以试试:
var t = 1.0 * getCurrentText();
获得浮动。
我很确定你的问题不是你想的那样。请在桌面和移动浏览器上访问此页面。对我来说,它们产生相同的结果。
https://jsfiddle.net/xpkhqdLa/1/
由于 str
是一个包含浮点数的字符串,下面所有的都产生相同的、正确的浮点值:
var values = [ str*1, 1*str, 1.0*str, parseFloat(str) ];
我正在编写一个非常基础的 html 计算器。最终结果和用户输入显示在下面的 "textDisplay_" 区域中:
<div id ="textDisplayRow_">
<div id = "textDisplay_" class = "calcTextDisplay">0.0</div>
</div>
我还有一个 JavaScript 代码,它使用这些函数获取显示值并将其解析为浮点数:
function getCurrentText() {
"use strict";
return document.getElementById("textDisplay_").innerHTML;
}
function getDisplayedNum() {
"use strict";
if (getCurrentText() === emptyMesg) {
return maxSafeInt;
}
var t = 1*getCurrentText();
//var t = parseFloat(getCurrentText(), 10);
if ((isNaN(t)) || (t === undefined)) {
return 0;
} else {
return t;
}
}
此代码在桌面浏览器上运行良好(我已经在 Chrome、FireFox 和 IE 上对其进行了测试)它们看起来都不错,假设我输入: 3.14*2 然后按'=' 他们给我 6.28.
但是在我的 android 4 上,使用最新版本的移动设备 chrome 和 firefox,所有小数都被四舍五入了!所以如果我输入“3.14*2=”,我会得到“6”!
我该如何解决这个问题?我看过其他包含 parseFloat does not work 的帖子,其中 none 与此问题类似。 两者也给出了相似的结果:
1*getCurrentText();
parseFloat(getCurrentText(), 10);
一个选择是编写我自己的 parseFloat(我以前为微控制器做过这个!)但我真的不想那样做。
非常感谢。
你可以试试:
var t = 1.0 * getCurrentText();
获得浮动。
我很确定你的问题不是你想的那样。请在桌面和移动浏览器上访问此页面。对我来说,它们产生相同的结果。
https://jsfiddle.net/xpkhqdLa/1/
由于 str
是一个包含浮点数的字符串,下面所有的都产生相同的、正确的浮点值:
var values = [ str*1, 1*str, 1.0*str, parseFloat(str) ];