我正在写一个非常基本的HTML计算器。最终结果和用户输入显示在下面的“textDisplay_”区域中:
<div id ="textDisplayRow_">
<div id = "textDisplay_" class = "calcTextDisplay">0.0</div>
</div>
我还有一个JavaScript代码,使用这些函数获取并将显示的值解析为float:
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的其他帖子不起作用,但没有一个与此问题类似。 两者都给出了类似的结果:
1*getCurrentText();
parseFloat(getCurrentText(), 10);
一个选择是编写我自己的parseFloat(我以前为微控制器做过这个!)但是我真的不想那样。
提前多多感谢。
答案 0 :(得分:1)
我很确定你的问题不是你想象的那样。请在桌面和移动浏览器上访问此页面。对我来说,他们产生了相同的结果。
如果str
是一个包含浮点数的字符串,则以下所有内容都会生成相同的正确浮点值:
var values = [ str*1, 1*str, 1.0*str, parseFloat(str) ];
答案 1 :(得分:0)
您可以尝试:
var t = 1.0 * getCurrentText();
获得一个浮动。