parseFloat无法在移动设备上使用

时间:2016-04-05 23:02:32

标签: javascript mobile-chrome

我正在写一个非常基本的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(我以前为微控制器做过这个!)但是我真的不想那样。

提前多多感谢。

2 个答案:

答案 0 :(得分:1)

我很确定你的问题不是你想象的那样。请在桌面和移动浏览器上访问此页面。对我来说,他们产生了相同的结果。

https://jsfiddle.net/xpkhqdLa/1/

如果str是一个包含浮点数的字符串,则以下所有内容都会生成相同的正确浮点值:

var values = [ str*1, 1*str, 1.0*str, parseFloat(str) ];

答案 1 :(得分:0)

您可以尝试:

var t = 1.0 * getCurrentText();

获得一个浮动。